home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / gnu / a2_0b_Emacs_sr.lha / Emacs-19.25 / site-lisp / ChangeLog < prev    next >
Text File  |  1994-09-10  |  138KB  |  4,200 lines

  1. Sat Sep 10 13:27:11 1994  Barry A. Warsaw  (warsaw@anthem.nlm.nih.gov)
  2.  
  3.     * Public Release of 4.85.
  4.  
  5. Wed Sep  7 18:41:29 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  6.  
  7.     * cc-mode.el (c-mode-fsf-menu, c-mode-map, c++-mode-map,
  8.       objc-mode-map):
  9.     use a better feature test to figure out how to set the menu title
  10.     string.
  11.  
  12. Tue Sep  6 13:49:46 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  13.  
  14.     * cc-mode.el (c-search-uplist-for-classkey):
  15.     in `class' keyword verification section, only skip forward for ?>
  16.     template char if a matching ?< char was found previous to
  17.     search-start.  This eliminates false match of template base
  18.     classes.
  19.  
  20. Thu Sep  1 22:30:23 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  21.  
  22.     * cc-mode.el (c-submit-bug-report): updated var list
  23.  
  24.     * cc-mode.el (c-mode-fsf-menu, c-mode-map, c++-mode-map,
  25.       objc-mode-map):
  26.     do a better job of getting the menu title string appropriate for
  27.     the mode being edited in.  Bogus, but necessary.  XEmacs is better
  28.     in this respect.
  29.  
  30.     * cc-mode.el (c-search-uplist-for-classkey): Lele patch for objc-mode
  31.  
  32.     * cc-mode.el (c-search-uplist-for-classkey):
  33.     avoid "invalid search bound" error
  34.  
  35.     * cc-mode.el (c-beginning-of-statement-1):
  36.     skip special modifier chars in all cases, not just in "no balanced
  37.     expr found" case.
  38.  
  39.     * cc-mode.el (c-guess-basic-syntax):
  40.     CASE 9: generalize and collect common code for finding position
  41.     after conditional statements, and check for `while' statement of a
  42.     `do' loop.  In that case, skip over the trailing semi.
  43.  
  44. Wed Aug 31 22:20:47 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  45.  
  46.     * cc-mode.el (c-progress-init, c-progress-update, c-progress-fini):
  47.     use a marker for end (and be sure to free it!) so that as
  48.     indentation occurs, % can't go above 100.
  49.  
  50.     * cc-mode.el (c-mode-map):
  51.     check on feature (fboundp 'add-menu) for FSF 19 (which doesn't
  52.     have it).
  53.  
  54.     * cc-mode.el (c-progress-info, c-progress-init,
  55.       c-progress-update,c-progress-fini):
  56.     new vars/defuns for better long indentation progress
  57.     reporting
  58.  
  59.     (c-indent-exp, c-indent-region): use new progress reporting
  60.  
  61. Tue Aug 30 21:57:37 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  62.  
  63.     * cc-mode.el (c-guess-basic-syntax):
  64.     CASE 6F, go forward 1 char from b-o-s of containing-sexp bufpos to
  65.     find proper relpos of an arglist-cont.
  66.  
  67.     * cc-mode.el (c-offset-alist-default):
  68.     statement-case-open default offset is zero
  69.  
  70.     (c-skip-case-statement-forward): new function
  71.  
  72.     (c-guess-basic-syntax): CASE 15: use c-skip-case-statement-forward in
  73.     proper places to find the real relpos of statement's inside switch
  74.     case/default bodies.  CASE 15D: remove special handling when looking
  75.     at c-conditional-key.
  76.  
  77.     * cc-mode.el (c-offsets-alist, c-cleanup-list, c-mode-menu,
  78.       c-mode-map, c-symbol-key, c-indent-line, c-popup-menu):
  79.     make sure ObjC is properly documented.
  80.  
  81.     * cc-mode.el (c-least-enclosing-brace): new function
  82.  
  83.     (c-enclosing-brace, c-guess-basic-syntax): renamed
  84.     c-enclosing-brace to c-most-enclosing-brace
  85.  
  86.     (c-indent-defun): handle opening braces not in column 1
  87.  
  88.     * cc-mode.el (c-beginning-of-statement-1):
  89.     skip over statement mod characters that don't preceed an open
  90.     paren.
  91.  
  92. Fri Aug 26 17:42:24 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  93.  
  94.     * cc-mode.el (c-guess-basic-syntax):
  95.     be careful to check for c-access-key non-nil before calling
  96.     (looking-at c-access-key).  For C, this is nil.
  97.  
  98.     * cc-mode.el (c-beginning-of-statement-1):
  99.     swapped CASE 3 and 4, so that conditional statements are picked up
  100.     properly
  101.  
  102.     * cc-mode.el (c-guess-basic-syntax):
  103.     CASE 15D, calculate relpos from boi of beginning of statement
  104.     prior to indent-point, unless we're looking at a conditional key
  105.  
  106.     * cc-mode.el (c-mode-map, c++-mode-map, objc-mode-map):
  107.     change test of 'FSF in c-emacs-features to an fboundp
  108.     set-keymap-parent test
  109.  
  110. Thu Aug 25 13:31:31 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  111.  
  112.     * cc-mode.el (c-just-after-func-arglist-p,
  113.       c-guess-basic-syntax, c-lineup-objc-method-args-2):
  114.     more objc patches from Lele
  115.  
  116. Wed Aug 24 21:06:05 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  117.  
  118.     * cc-mode.el (c-indent-command):
  119.     with optional arg, shift-amt had wrong sign
  120.  
  121.     * cc-mode.el (c-lineup-arglist):
  122.     better handling of comments preceding arg lists
  123.  
  124.     * cc-mode.el (c-guess-basic-syntax):
  125.     swapped CASE 6A and 6B so that empty arglists with close paren on
  126.     separate line are properly recognized.
  127.  
  128.     * cc-mode.el (c-mode-menu, c-emacs-features, c-mode-map,
  129.       c-common-init):
  130.     remove dependency on string "Lucid" in emacs-version.  Use
  131.     features based means where such descrimination is necessary.
  132.  
  133. Tue Aug 23 18:43:28 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  134.  
  135.     * cc-mode.el (c-fill-paragraph):
  136.     merge with c-mode.el uses fill-region-as-paragraph
  137.  
  138.     * cc-mode.el (c-offsets-alist-default, c-offsets-alist,
  139.     c-hanging-braces-alist, c-electric-brace, c-guess-basic-syntax):
  140.     added syntactic symbol statement-case-open for
  141.     statement-case-intro's that contain an open brace.
  142.  
  143.     * cc-mode.el (c-lineup-math): watch for equal signs in literals
  144.  
  145.     * cc-mode.el (c-beginning-of-statement-1):
  146.     CASE5 and CASE 6, better pick up of label's with potential
  147.     embedded colons (scope operators).
  148.  
  149. Mon Aug 22 22:28:03 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  150.  
  151.     * cc-mode.el (c-hanging-comment-ender-p): new variable
  152.  
  153.     (c-fill-paragraph): looks at c-hanging-comment-ender-p to see if
  154.     */ should be left on its own line.  c-mode.el behavior is default
  155.     value t, but there have been *many* requests for nil's behavior.
  156.  
  157. Wed Aug 17 23:05:01 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  158.  
  159.     * cc-mode.el (c-recognize-knr-p, c-common-init):
  160.     fix the way this var is made buffer local
  161.  
  162. Tue Aug 16 20:05:49 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  163.  
  164.     * cc-mode.el (c-recognize-knr-p, c-mode, c++-mode, objc-mode):
  165.     make it so c-recognize-knr-p is settable from c-mode-common-hook.
  166.  
  167. Thu Aug 11 20:40:06 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  168.  
  169.     * cc-mode.el (c-recognize-knr-p): new variable
  170.  
  171.     (c-offsets-alist-default, c-offsets-alist, c-guess-basic-syntax):
  172.     changed syntactic symbol c++-funcdecl-cont to ansi-funcdecl-cont
  173.  
  174.     (c-mode, c++-mode, objc-mode): use new c-recognize-knr-p variable
  175.  
  176.     (c-guess-basic-syntax): use new c-recognize-knr-p variable; swap
  177.     CASE 5B.2 and 5B.3.
  178.  
  179. Wed Aug 10 17:54:53 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  180.  
  181.     * cc-mode.el (c-offsets-alist, c-read-offset, c-set-offset):
  182.     can accept variable symbols as offsets.
  183.  
  184.     (c-get-offset): can now accept ++ and -- symbols, which evaluate
  185.     to 2* positive and negative c-basic-offset.
  186.  
  187. Thu Aug  4 15:29:43 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  188.  
  189.     * cc-mode.el (c-guess-basic-syntax):
  190.     case 9C added small performance improvment to c-in-literal call
  191.  
  192. Wed Aug  3 17:37:30 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  193.  
  194.     * cc-mode.el (c-beginning-of-statement-1):
  195.     use c-in-literal-cache, and limit backscanning in CASE 5 to known,
  196.     non-literal position.
  197.  
  198.     * cc-mode.el (c-in-literal, c-guess-basic-syntax):
  199.     caching of last literal result
  200.  
  201. Tue Aug  2 20:18:10 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  202.  
  203.     * cc-mode.el (c-guess-basic-syntax):
  204.     CASE 15D, calculate 'statement relpos as the
  205.     beginning-of-statement relative to indent-point.
  206.  
  207.     * cc-mode.el (c-beginning-of-statement-1):
  208.     CASE 4, check for conditional keywords which could be followed by
  209.     a balanced paren expr.  I.e. while(foo)
  210.  
  211. Tue Jul 26 15:55:21 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  212.  
  213.     * cc-mode.el (c++-mode-syntax-table, objc-mode-syntax-table):
  214.     give CR same syntax as newline, for selective-display.
  215.  
  216. Fri Jul 22 18:42:38 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  217.  
  218.     * cc-mode.el (c-electric-star):
  219.     fixed indentation problem when a star is not preceded by a slash.
  220.  
  221.     * cc-mode.el (c-indent-defun):
  222.     removed condition-case inside unwind-protect.  All error
  223.     conditions are properly handled at other levels of the code.
  224.  
  225. Thu Jul 21 22:34:19 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  226.  
  227.     * cc-mode.el (c-class-key, c-search-uplist-for-classkey):
  228.     greatly simplified, this constant now contains a regexp that only
  229.     matches valid `class' keywords, in the C++ sense. It now ignores
  230.     any template, extern, static, etc. keywords.
  231.  
  232. Tue Jul 19 09:53:37 1994  Barry A. Warsaw  (warsaw@anthem.nlm.nih.gov)
  233.  
  234.     * Public Release of 4.35.
  235.  
  236. Sun Jul 17 18:29:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  237.  
  238.     * cc-mode.el (c-guess-basic-syntax):
  239.     Lele Gaifax's patch to fix an Objc problem...
  240.     
  241.     "this patch, applied to 4.32, will correct a little bug in ObjC
  242.     mode.  Currently objc-mode fails to recognize a continued arglist,
  243.     as it guesses every such construct is a continued method call."
  244.  
  245. Fri Jul 15 13:48:39 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  246.  
  247.     * cc-mode.el (c-search-uplist-for-classkey): don't get fooled by
  248.     the following C construct:
  249.     
  250.     struct shmid_internal
  251.     shmconv(
  252.         register int    s)
  253.     {
  254.         int foo = 1;
  255.     }
  256.  
  257. Tue Jul 12 14:36:10 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  258.  
  259.     * cc-mode.el (c-parse-state): in body of `something bad happened'
  260.     part, don't use beginning-of-defun to find "real" bod since based
  261.     on some coding styles, this could loop us all the way back to
  262.     bob. E.g.:
  263.     
  264.     int foo() {
  265.     int a = 7;
  266.     {
  267.         foobar();
  268.     }}
  269.     
  270.     int foo() {
  271.     int a = 7;
  272.     {
  273.         foobar();
  274.     }}
  275.     
  276.     
  277.     Instead use scan-lists and be more robust about crossing
  278.     unbalanced close braces.  Now even antisocial coding styles like
  279.     the above can be quickly parsed correctly.
  280.  
  281.     * cc-mode.el (c-parse-state): small but important fix in
  282.     `something bad happened' test. make sure that placeholder close
  283.     brace ends up before indent point, otherwise we didn't cross it.
  284.  
  285. Thu Jul  7 13:56:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  286.  
  287.     * cc-mode.el (c-parse-state): in `something bad' section,
  288.     placeholder will always be just after any close brace so we need
  289.     to 1- from it to check for ?}. Also, we probably don't need to
  290.     check for placeholder-1 being nil.
  291.  
  292. Thu Jun 30 21:03:55 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  293.  
  294.     * cc-mode.el (c-switch-label-key): a paren can follow the `case'
  295.     keyword without any intervening whitespace.
  296.  
  297.     * cc-mode.el (c-beginning-of-statement-1): when skipping over
  298.     unary ops, remember that whitespace could be intermixed before the
  299.     paren
  300.  
  301.     * cc-mode.el (c-electric-brace): added brace-list-intro and
  302.     brace-list-entry to list of hangables
  303.     
  304.     (c-hanging-braces-alist): added docstring for b-l-i and b-l-e
  305.     hangability
  306.  
  307.     * cc-mode.el (c-beginning-of-statement-1): CASE 6: be sure to
  308.     ignore switch labels too.
  309.  
  310.     * cc-mode.el (c-lineup-arglist-intro-after-paren): new lineup
  311.     function to conform to GNU style.
  312.     
  313.     (c-style-alist): for style GNU, arglist-intro set to
  314.     c-lineup-arglist-intro-after-paren and arglist-close set to
  315.     c-lineup-arglist to conform to BOCM GNU style.
  316.  
  317. Wed Jun 29 00:48:56 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  318.  
  319.     * cc-mode.el (c-guess-basic-syntax): installed this patch:
  320.     
  321.     In ObjC mode 4.6 the tests 6D and 6E in c-guess-basic-syntax need
  322.     to be swapped. Otherwise what is a continued method call line will
  323.     be recognized as a 'arglist-cont-nonempty. Swapping these test
  324.     will not interfere with the normal behaviour of cc-mode, since the
  325.     test for the method call is surrounded with a test on (eq
  326.     major-mode 'objc-mode).
  327.     
  328.     Emanuele (lele) Gaifax     | ...calling Emacs convenient, of course, is
  329.     lele@nautilus.sublink.org  | like calling oxygen useful  -- Rens Troost
  330.  
  331.     * cc-mode.el (c-mark-function): new implementation based on
  332.     c-parse-state.  I think this should work much better for people.
  333.  
  334. Tue Jun 28 23:57:42 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  335.  
  336.     * cc-mode.el (c-just-after-func-arglist-p): partial fix for this bug:
  337.     
  338.     class foo
  339.     {
  340.        foo()
  341.           :                    // member-init-intro
  342.        a (0),                // topmost-intro-cont???
  343.        b (0)                // member-init-cont
  344.        {}
  345.     };
  346.     
  347.     
  348.     note that if there is a comment after foo(), its still broken.
  349.     But that probably won't happen too often...
  350.  
  351.     * cc-mode.el (c-lineup-arglist): don't limit skippages forward
  352.     over syntactic ws to eol.
  353.  
  354. Mon Jun 27 18:25:42 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  355.  
  356.     * cc-mode.el (c-parse-state): when looking to see if `something
  357.     bad happened', and guaranteeing that the char-after placeholder is
  358.     = to ?}, make sure that char-after placeholder is less than
  359.     point-max (i.e. char-after placeholder returns non-nil).
  360.  
  361.     * cc-mode.el (c-electric-star): should not re-indent line if
  362.     introducing a comment not on a comment-only line
  363.  
  364. Thu Jun 23 17:54:49 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  365.  
  366.     * cc-mode.el (c-inside-bracelist-p): when finding an enum, check
  367.     to be sure its not a type descriptor on a return value of a func
  368.     (i.e. skip-chars-forward for not semi or open paren).
  369.  
  370. Wed Jun 22 19:23:43 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  371.  
  372.     * cc-mode.el (c-parse-state): when trying to find out if
  373.     "something bad happened" be sure to check for crossing a close
  374.     *brace* and not a close paren or square bracket.  Only crossing a
  375.     close brace indicates badness.
  376.  
  377. Mon Jun 20 00:32:46 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  378.  
  379.     * cc-mode.el (c-set-offset): initial contents of prompt is the
  380.     last syntactic symbol on the syntactic analysis list -- the most
  381.     likely symbol that the user wants to change.
  382.  
  383. Fri Jun 17 22:25:41 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  384.  
  385.     * cc-mode.el (c-lineup-arglist): fixed problem of skipping too
  386.     many close parens when finding the relpos of arglist-close.
  387.  
  388.     * cc-mode.el (c-guess-basic-syntax): CASE 6F fixed incorrect
  389.       relpos
  390.  
  391.     * cc-mode.el (c-guess-basic-syntax): CASE 8B and CASE 8C: when an
  392.     otherwise brace-list-entry or brace-list-intro is found to start
  393.     with an open brace, the line is given brace-list-open syntax
  394.     instead
  395.     
  396.     (c-inside-bracelist-p): fix small bug in recognizing open brace at
  397.     brace-list-intro line, and infinite loop problem.
  398.  
  399.     * cc-mode.el (c-inside-bracelist-p): more accurate handling of
  400.     nested aggregates. Now uses brace-state as provided by
  401.     c-parse-state.
  402.  
  403. Tue Jun 14 22:25:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  404.  
  405.     * cc-mode.el (c-forward-conditional): break infinite loop when
  406.     finding commented out conditionals
  407.  
  408. Mon Jun 13 17:40:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  409.  
  410.     * cc-mode.el (c-submit-bug-report): Use new interface for
  411.     reporter.el 2.x
  412.  
  413. Fri Jun 10 13:42:02 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  414.  
  415.     * cc-mode.el (c-submit-bug-report): remove defun-prompt-regexp
  416.     from the list of vars if it is not boundp (i.e. v18)
  417.  
  418. Thu Jun  9 14:15:00 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  419.  
  420.     * cc-mode.el (c-guess-basic-syntax): repaired all CASE numbers
  421.  
  422.     * cc-mode.el (c-offsets-alist-default): added syntactic symbols
  423.     objc-method-intro objc-method-args-cont objc-method-call-cont.
  424.     
  425.     (c-offsets-alist): added descriptions for above new syntactic symbols
  426.     
  427.     (objc-mode-hook) (objc-mode-abbrev-table) (objc-mode-map)
  428.     (objc-mode-syntax-table) (objc-mode): added for Objective-C support
  429.     
  430.     (c-objc-method-key): new regexp desribing an ObjC method intro.
  431.     
  432.     (c-electric-slash): objc-mode understands // comments
  433.     
  434.     (c-fill-paragraph): objc-mode understands // comments
  435.     
  436.     (c-beginning-of-statement-1): added CASE 7 for objc-mode
  437.     
  438.     (c-in-objc-method-def-p): checks to see if inside an Objective-C
  439.     method definition.
  440.     
  441.     (c-just-after-func-arglist-p): check for Objective-C method def
  442.     
  443.     (c-guess-basic-syntax): many modifications to look for Objective-C
  444.     syntactic symbols: CASE 3.5, CASE 4G, CASE 4I, CASE 5E.
  445.     
  446.     (c-lineup-objc-method-call) (c-lineup-objc-method-args): new custom
  447.     lineup functions for Objective-C methods.
  448.     
  449.     (c-submit-bug-report): look for ObjC mode
  450.  
  451. Mon Jun  6 19:47:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  452.  
  453.     * cc-mode.el (c-style-alist): another fix to Ellemtel style.
  454.     Since the style guide recommends braces around the body of all
  455.     case statements, statement-case-intro should be 0, letting
  456.     statement-block-intro of the following line pick up the proper
  457.     indentation
  458.  
  459.     * cc-mode.el (c-style-alist): Ellemtel style should have
  460.     c-hanging-braces-alist for substatement-open be before and after
  461.  
  462. Thu Jun  2 23:09:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  463.  
  464.     * cc-mode.el (c-strict-syntactics-p): changed to c-strict-syntax-p
  465.     
  466.     (c-guess-basic-syntactics): changed to c-guess-basic-syntax
  467.     
  468.     (c-add-syntactics): changed to c-add-syntax
  469.     
  470.     (various): use new function and variable names
  471.  
  472. Wed Jun  1 15:46:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  473.  
  474.     * cc-mode.el: bumping to version 4 in anticipation of objc-mode
  475.       support
  476.  
  477. Tue May 31 23:51:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  478.  
  479.     * cc-mode.el (c-strict-semantics-p): changed to c-strict-syntactics-p
  480.     
  481.     (c-echo-semantic-information-p): changed to
  482.     c-echo-syntactic-information-p
  483.     
  484.     (c-semantics): changed to c-syntactic-context
  485.     
  486.     (c-guess-basic-semantics): changed to c-guess-basic-syntactics
  487.     
  488.     (c-show-semantic-information): changed to c-show-syntactic-information
  489.     
  490.     (cc-mode.el): other internal changes to make terminology consistent
  491.  
  492.     * cc-mode.el (c-guess-basic-semantics):
  493.     CASE 14.E, if defun opening brace is not at
  494.     boi, its because its hung on right side so we need a different relpos
  495.  
  496.     * cc-mode.el (c-guess-basic-semantics):
  497.     CASE5, various.  Extend the notion of
  498.     arglists to bracket lists, i.e. [...]
  499.  
  500.     * cc-mode.el (c-search-uplist-for-classkey):
  501.     when skipping over commas after
  502.     classkey's watch out for inheritance lists...
  503.  
  504.     * cc-mode.el (c-beginning-of-statement-1):
  505.     ignore labels and access keys
  506.  
  507. Tue May 24 22:04:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  508.  
  509.     * Public Release 3.349
  510.  
  511.     * cc-mode.el (c-search-uplist-for-classkey):
  512.     break out of infinite loop when
  513.     finding `struct' keyword in arglist
  514.  
  515. Mon May 23 15:43:07 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  516.  
  517.     * cc-mode.el (c-electric-brace):
  518.     we need to recalculate semantics if, when
  519.     re-indenting the preceding line, point changes.  If this happens, the
  520.     relpos for semantics is invalid.
  521.  
  522. Thu May 19 22:27:55 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  523.  
  524.     * cc-mode.el (c-style-alist):
  525.     updated the various styles to set the correct values
  526.     for substatement-open
  527.     
  528.     (c-style-alist): added dynamic setting of default style.  The way this
  529.     works may or may not be a feature?
  530.  
  531. Wed May 18 22:07:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  532.  
  533.     * cc-mode.el (c-backward-to-start-of-if):
  534.     fix to correctly handle `else-if'
  535.     clauses, which should be skipped when looking for the matching if.
  536.  
  537.     * cc-mode.el (c-search-uplist-for-classkey):
  538.     don't get confused by a single struct
  539.     type arg in a function's arglist
  540.  
  541.     * cc-mode.el (c-beginning-of-statement-1):
  542.     on backward-sexp failure, skip over
  543.     funny chars and whitespace only when just before a paren
  544.     
  545.     (c-search-uplist-for-classkey): watch out for comma ending struct arg
  546.     declarations which doesn't leave us in a class definition.
  547.  
  548.     * cc-mode.el (c-mode-map):
  549.     fix the setting of mode-popup-menu for Lemacs 19.10.
  550.     Menu must have a title string.
  551.  
  552.     * cc-mode.el (c-style-alist):
  553.     changes to Ellemtel style: substatement sets its
  554.     offset to 3, substatement-open sets its offset to 0.  Given by:
  555.     <qhslali@aom.ericsson.se> Lars Lindberg.
  556.  
  557. Tue May 17 22:46:22 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  558.  
  559.     * cc-mode.el (c-beginning-of-statement-1):
  560.     when backward-sexp fails and doing
  561.     backward-up-list, and before skipping over noise characters, skip over
  562.     any preceding syntactic whitespace:
  563.     
  564.     --------------V
  565.         if ( ! backup_dev ||
  566.                  sep1 != ':' || )
  567.  
  568.     * cc-mode.el (c-beginning-of-statement-1):
  569.     fixed small infinite loop in CASE5 test
  570.     when barrier char is in literal.
  571.  
  572.     * cc-mode.el (c-guess-basic-semantics):
  573.     CASE 13: don't limit the search backwards
  574.     for the beginning of statement
  575.  
  576.     * cc-mode.el (c-beginning-of-statement-1):
  577.     completely rewritten to properly account
  578.     for cpp macros and statement barrier characters (e.g. { } ;) in
  579.     literals.
  580.  
  581. Mon May 16 20:21:12 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  582.  
  583.     * cc-mode.el (c-inside-bracelist-p):
  584.     must check that enum keyword truly introduces
  585.     a bracelist and not that it is a type identifier for a declaration.
  586.     
  587.     I.e. match:
  588.     
  589.     enum foo { /* ... */ }
  590.     
  591.     but not:
  592.     
  593.     enum foo bar;
  594.  
  595. Thu May 12 22:52:12 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  596.  
  597.     * cc-mode.el (c-guess-basic-semantics):
  598.     CASE 4A.2 watch out for enum keywords in
  599.     K&R argdecl lists.  These don't open enum definitions, but they are
  600.     declarations instead.  E.g.:
  601.     
  602.     ret_stat (rpt_stat, filename, pcode)
  603.         enum xrpt_status_codes rpt_stat;
  604.         char filename[];
  605.         enum xpippop_codes pcode;
  606.     {
  607.  
  608.     * cc-mode.el:
  609.     (c-C-conditional-key) (c-C++-conditional-key): new regexps which
  610.     describe conditionals in the two supported languages.  This is
  611.     necessary because `try' and `catch' blocks are defined as
  612.     substatements equivalent to `while', `for', etc., in C++ only
  613.     
  614.     (c-mode) (c++-mode): set c-conditional-key, which is now buffer-local,
  615.     to either c-C-conditional-key or c-C++-conditional-key.
  616.  
  617.     * cc-mode.el (c-parse-state):
  618.     when we discover that an open brace we thought
  619.     specified the bod, actually isn't the bod, we backup and search for
  620.     another potential bod.  This is necessary so that open braces in
  621.     column zero that aren't really defun opening braces don't trip us up.
  622.     Our test for invalid bod is if we cross over an unbalanced close
  623.     brace.
  624.  
  625.     * cc-mode.el (c-guess-basic-semantics):
  626.     CASE 4G, in c-mode, fix recognition of the
  627.     last line in the following construct:
  628.     
  629.     typedef int (*foobar)           /* if I break this into 2 lines ...*/
  630.         (int foo, char *bar);
  631.     extern foobar really;       /* this is incorrectly indented */
  632.  
  633. Tue May 10 16:42:13 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  634.  
  635.     * cc-mode.el (c-indent-region):
  636.     fixed a bug where comment-only lines were being
  637.     skipped.  Wrapped an unwind-protect around mark copying so we can't
  638.     leak marks.
  639.  
  640.     * cc-mode.el (c-emacs-feature): use variables emacs-major-version and
  641.     emacs-minor-version if they exist
  642.  
  643. Fri May  6 21:09:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  644.  
  645.     * cc-mode.el (c-style-alist):
  646.     small changes to the Ellemtel style: inline-open and
  647.     topmost-intro-cont are changed to 0 offset.
  648.  
  649.     * cc-mode.el (c-hanging-braces-alist):
  650.     added (substatement after) so that braces
  651.     will hanging on substatement blocks
  652.  
  653. Thu May  5 22:48:23 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  654.  
  655.     * cc-mode.el (c-lineup-math):
  656.     can now line up equals signs even if the equals isn't
  657.     at boi.  E.g., it can now handle:
  658.     
  659.     float a = 1.0,
  660.           b = 7,
  661.           c = 9;
  662.  
  663.     * cc-mode.el (c-comment-start-regexp):
  664.     new buffer-local variable which describes
  665.     how comments start.  This improves generality for C-like modes with
  666.     different comment intro styles.
  667.  
  668.     * cc-mode.el (c-indent-via-language-element):
  669.     renamed to c-indent-line for better
  670.     backwards compatibility, i.e. awk-mode
  671.  
  672. Tue Apr 26 16:17:29 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  673.  
  674.     * cc-mode.el (c-parse-state):
  675.     make sure we ignore any bogus beginning-of-defun
  676.     bufpos's when we're searching back 2 bods
  677.  
  678.     * cc-mode.el (c-search-uplist-for-classkey):
  679.     after finding what looks like a class
  680.     header, search for both a semi (denoting a fwd decl), and an equals
  681.     (denoting a struct init).
  682.  
  683. Thu Apr 21 21:12:26 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  684.  
  685.     * cc-mode.el:
  686.     (c-electric-brace) (c-electric-semi&comma) (c-electric-colon)
  687.     (c-indent-command) (c-indent-exp) (c-indent-region)
  688.     (c-indent-via-language-element): eliminated extraneous optional
  689.     arguments, i.e. lim and bod
  690.  
  691.     * cc-mode.el (c-adaptive-block-open): obsolete
  692.     
  693.     (c-offsets-alist-default) (c-electric-brace): added substatement-open
  694.     syntactic symbol
  695.     
  696.     (c-hanging-braces-alist): added ability to hang substatement-open
  697.     braces.
  698.     
  699.     (c-style-alist): changed defaults of block-open to substatement-open
  700.  
  701.     * cc-mode.el (c-safe):
  702.     use Dan LaLiberte's version impl. workaround for an FSF
  703.     19.22 bug
  704.  
  705. Tue Apr 19 15:15:41 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  706.  
  707.     * cc-mode.el (c-mode-map): put c-macro-expand on C-c C-e
  708.  
  709.     * cc-mode.el:
  710.     (c-mode-map) (c-common-init): put in code to conform to Lucid 19.10's
  711.     popup menu convention of using mode-popup-menu variable
  712.  
  713. Fri Apr 15 23:09:59 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  714.  
  715.     * cc-mode.el (c-indent-defun): handle buffer-read-only errors better
  716.  
  717.     * cc-mode.el (c-lineup-math): also lines up multi-line equal signs
  718.  
  719.     * cc-mode.el (c-guess-basic-semantics):
  720.     replaced calculation of literal which must
  721.     have gotten accidentally removed some time ago.
  722.  
  723.     * cc-mode.el (c-1bit-il):
  724.     removed since it appears to be identical to c-in-literal,
  725.     and thus obsolete.
  726.  
  727.     * cc-mode.el (c-search-uplist-for-classkey):
  728.     programmatically ignore the `class'
  729.     keyword inside template arg lists
  730.     
  731.     (c-enclosing-brace) (c-narrow-out-enclosing-class): new helper
  732.     functions
  733.     
  734.     (c-guess-basic-semantics): fixed recognition of 'defun-open CASE 4A.4,
  735.     CASE 13.A, 'block-close CASE 13.B, 'defun-block-intro CASE 14.E
  736.  
  737. Thu Apr 14 18:42:00 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  738.  
  739.     * cc-mode.el (c-parse-state):
  740.     record containing paren, but not balanced paren sexps
  741.  
  742.     * cc-mode.el (c-guess-basic-semantics):
  743.     fixed a regression problem in recognizing
  744.     the difference between an inline-close and a nested class-close
  745.  
  746.     * cc-mode.el: (c-parse-state) (c-guess-basic-semantics)
  747.     (c-search-uplist-for-classkey): massive rewrite of all parsing
  748.     components. c-parse-state now uncovers the brace nesting level of the
  749.     construct from (bod 2) to point and the other two defuns use this
  750.     information to make scooting around brace levels much quicker and more
  751.     accurate.
  752.  
  753. Thu Apr  7 14:34:28 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  754.  
  755.     * cc-mode.el (c-electric-brace):
  756.     can now specify `hanginess' on close braces
  757.  
  758. Thu Mar 31 15:10:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  759.  
  760.     * Public release: 3.304
  761.  
  762.     * cc-mode.el (c-search-uplist-for-classkey):
  763.     class relpos should be at the 'boi of
  764.     where c-class-key gives us a match.  This is because its too hard to
  765.     make c-class-key match the typedef keyword on:
  766.     
  767.     typedef struct Foo
  768.     {
  769.     
  770.     so its easier to make this fix instead.
  771.  
  772. Fri Mar 25 20:34:18 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  773.  
  774.     * cc-mode.el:
  775.     (c-forward-syntactic-ws) (c-backward-syntactic-ws): minor speed ups
  776.     achieved by calling forward-comment with a huge number so we don't
  777.     have to return to the lisp loop after just 1 comment.
  778.  
  779.     * cc-mode.el (c-search-uplist-for-classkey):
  780.     added another speedup where syntactic
  781.     whitespace is skipped before doing a re-search-forward.  This requires
  782.     however that the buffer be narrowed during the r-s-f because of the
  783.     definition of c-class-key which matches \\` or empty-string-at-bod.
  784.     It would be better to use \\`\\|\\= to match empty-string-at-point,
  785.     but that's not defined for v18, and doesn't seem to work anyway, at
  786.     least in Lemacs.
  787.     
  788.     (c-search-uplist-for-classkey): after finding a match for c-class-key,
  789.     skip non-semicolons up to brace point.  If a semi is found, we're
  790.     looking at a forward declaration, not a class definition.
  791.  
  792. Thu Mar 24 18:43:38 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  793.  
  794.     * cc-mode.el (c-guess-basic-semantics): do not limit calls to
  795.     c-search-uplist-for-classkey to just c++-mode since even in C we can
  796.     have nested structs and unions.
  797.     
  798.     (c-search-uplist-for-classkey): now returns a vector instead of a
  799.     cons cell
  800.     
  801.     (c-guess-basic-semantics): modifications for new c-s-u-f-c return
  802.     value
  803.  
  804.     * cc-mode.el:
  805.     (c-inside-bracelist-p) (c-guess-basic-semantics): when looking for an
  806.     enum brace-list, c-beginning-of-statement could leave us at point-min,
  807.     which could contain an intervening comment, so you need to call
  808.     c-forward-syntactic-ws.
  809.  
  810. Wed Mar 23 23:22:37 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  811.  
  812.     * cc-mode.el (c-search-uplist-for-classkey):
  813.     another fix for infinite loops that
  814.     can occur when indenting inside the second of multiple nested classes.
  815.     This should also speed things up by further limiting the region being
  816.     searched.
  817.  
  818. Tue Mar 22 23:12:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  819.  
  820.     * cc-mode.el (c-mark-function):
  821.     worked around call to backward-paragraph, which
  822.     didn't work and wasn't the right semantics anyway.  Movement should be
  823.     by beginning-/end-of-defun.
  824.  
  825.     * cc-mode.el (c-indent-exp):
  826.     restructure the unwind-protect call to ensure that the
  827.     `end' marker is always removed on any error condition.
  828.     
  829.     (c-indent-exp): find any open brace that occurs after point, ignoring
  830.     lexical whitespace, including newlines.
  831.  
  832.     * cc-mode.el (c-inside-bracelist-p):
  833.     in the first goto-char, goto containing-sexp,
  834.     not 1- c-s, otherwise, it will not properly recognize bracelists with
  835.     comments on the end of the line.  The following
  836.     c-beginning-of-statement will properly consume any preceding
  837.     whitespace.
  838.  
  839. Mon Mar 21 22:01:25 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  840.  
  841.     * cc-mode.el (c-search-uplist-for-classkey):
  842.     must handle nil return value from
  843.     scan-lists.
  844.  
  845.     * cc-mode.el (c-search-uplist-for-classkey):
  846.     fix problem of infinite loops when
  847.     there are balanced expressions between (bod 2) and the indent-point
  848.     that aren't picked up by bod because they don't match
  849.     defun-prompt-regexp.  We skip over this noise with scan-lists.
  850.  
  851.     * cc-mode-18.el:
  852.     don't hack c-emacs18-common-hook onto c-mode-common-hook anymore. tell
  853.     users to put it on their c-mode-common-hook themselves.
  854.  
  855.     * cc-mode.el (c-search-uplist-for-classkey): end-of-defun can fail
  856.  
  857. Fri Mar 18 21:38:31 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  858.  
  859.     * cc-mode.el (c-search-uplist-for-classkey):
  860.     new performance tuned version.  Here
  861.     are some numbers: hitting tab at the end of an 11k function, with an
  862.     8k function just before it was giving me 2.637sec for
  863.     c-indent-command, and 1.784sec for c-s-u-f-c alone.  Now I'm getting
  864.     0.972sec for c-i-c and 0.180sec for c-s-u-f-c.  An order of magnitude
  865.     improvement in c-s-u-f-c.  These are un-bc'd times. Other bottlenecks
  866.     must exist in c-i-c...
  867.  
  868.     * cc-mode.el:
  869.     added an eval-when-compile to pick up the reporter-* symbols when
  870.     byte-compiling.
  871.  
  872. Thu Mar 17 20:56:04 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  873.  
  874.     * cc-mode.el (c-electric-colon):
  875.     do scope-operator clean up immediately after
  876.     self-insert-command so that subsequent indentation and hanging
  877.     calculations will be performed correctly
  878.  
  879. Tue Mar 15 23:29:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  880.  
  881.     * cc-mode.el (c-search-uplist-for-classkey):
  882.     adjust for the fact that c-class-key
  883.     now match 1 character before the `c' in "class".  goto-char 1+ foundp
  884.     to get to the proper character starting the class definition.
  885.  
  886.     * cc-mode.el (c-read-offset): new helper function for c-set-offset
  887.     
  888.     (c-set-offset): sanity check OFFSET argument both interactively and
  889.     non-interactively.  This seems to trip up many novices.
  890.  
  891.     * cc-mode.el (c++-mode-map):
  892.     fixed binding for c-scope-operator. It is now on C-c :
  893.  
  894. Fri Mar 11 23:45:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  895.  
  896.     * cc-mode-18.el (c-emacs18-il): applied patch contributed by
  897.     SAKAI Kiyotaka(ksakai@mtl.t.u-tokyo.ac.jp) to fix infinite loop bug.
  898.  
  899.     * cc-mode.el (c-fill-paragraph): removed last 2 c-mode.el dependencies
  900.  
  901.     * cc-mode.el (c-guess-basic-semantics):
  902.     CASE 8C: after moving to placeholder, which
  903.     is bos, move over any conditional statments if looking at
  904.     c-conditional-key.  Otherwise the following code indents incorrectly:
  905.     
  906.     main()
  907.     {
  908.         while (cin >> float)
  909.             cout << float
  910.                  << float;   //  This should not be this far over but beneath <<
  911.     }
  912.  
  913.     * cc-mode.el (c-indent-exp):
  914.     put an unwind-protect around the sanity checks so that
  915.     point is restored on error
  916.  
  917.     * cc-mode.el (c-class-key): another fix to recognize keyword
  918.       `class' at beginning-of-buffer.
  919.     
  920.     (c-guess-basic-semantics): if class opening brace is not the last
  921.     non-whitespace on a line, the narrow-to-region narrowing out of
  922.     enclosing class will not have the proper begin point.  Make sure the
  923.     region does not contain the class opening brace.
  924.  
  925.     * cc-mode.el (c-indent-region):
  926.     fixed error signal when indenting region not
  927.     containing balanced sexp. e.g. at the top level:
  928.     
  929.     int i,
  930.         j,
  931.         k;
  932.  
  933.     * cc-mode.el (c-class-key):
  934.     another fix to recognize nested class but not the word
  935.     'class' in a template declaration
  936.  
  937. Thu Mar 10 23:32:37 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  938.  
  939.     * cc-mode.el (c-beginning-of-statement-1):
  940.     sped up about 8x by removing an
  941.     unnecessary (I think) call to c-backward-syntactic-ws and a duplicate
  942.     call to c-in-literal.  By using elp, I think these were the real time
  943.     hogs in c-b-o-s-1 which was the biggest hog in
  944.     c-guess-basic-semantics.
  945.  
  946. Wed Mar  9 22:15:26 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  947.  
  948.     * cc-mode.el (c-lineup-arglist):
  949.     added a (beginning-of-line) call before the
  950.     (backward-up-list 1) call in the special case for arglist-intro and
  951.     arglist-cont-nonempty.  Without this, indentation would be different
  952.     when point was at the beginning and end of line.  E.g.:
  953.     
  954.     main()
  955.     {
  956.         if ((BuddyRec* buf = (BuddyRec*)(bufs[message_bufs++]
  957.                          = ::new unsigned char[MessageBufSize]))
  958.             == 0) {
  959.         }
  960.     }
  961.     
  962.     
  963.     On the "== 0) {" line.
  964.  
  965.     * cc-mode.el (c-indent-exp):
  966.     try to be smarter about finding the beginning of the
  967.     balanced expression to indent.  Gives results closer to old
  968.     indent-c-exp behavior.
  969.  
  970.     * cc-mode.el (c-submit-bug-report):
  971.     moved the require of reporter to after the
  972.     y-or-n-p question. Shortened the package name so it will fit on the
  973.     Subject line better.
  974.  
  975. Mon Mar  7 17:39:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  976.  
  977.     * cc-mode.el (c-skip-conditional):
  978.     new function. factorized duplicate code
  979.     
  980.     (c-guess-basic-semantics): fixed statement-cont relpos calculation in
  981.     a continued statement following an else clause. CASE 8A and 8D changed
  982.     to use c-skip-conditional.
  983.  
  984. Mon Feb 28 18:23:36 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  985.  
  986.     * cc-mode.el (c-conditional-key):
  987.     not sufficient to wrap conditional keywords in
  988.     \\<...\\> since this will false hit a keyword followed by an
  989.     underscore, which technically isn't a keyword.  An example is
  990.     "do_table" which incorrectly gets marked as a `do' keyword.
  991.  
  992. Fri Feb 25 23:01:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  993.  
  994.     * cc-mode.el (c-guess-basic-semantics):
  995.     swapped CASE 7A and 7B so that we properly
  996.     indentify a brace-list-close of an empty brace list.
  997.  
  998.     * cc-mode.el (c-style-alist):
  999.     added the "Ellemtel" style which implements the
  1000.     coding style defined in "Programming in C++, Rules and
  1001.     Recommendations, Erik Nyquist and Mats Henricson, Ellemtel, ftp from
  1002.     euagate.eua.ericsson.se".
  1003.  
  1004.     * cc-mode.el: (c-point) (c-indent-defun): only check the value of
  1005.     defun-prompt-regexp if it is boundp (so v18 doesn't break)
  1006.  
  1007. Thu Feb 24 23:34:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1008.  
  1009.     * cc-mode.el (c-electric-brace):
  1010.     fixed bug in temporary newline insertion when
  1011.     auto-newline is off.  If a temp newline was not inserted, don't try to
  1012.     delete it later on.
  1013.  
  1014.     * cc-mode.el (c-set-offset):
  1015.     changed the minibuffer prompt.  "Langelem" =>
  1016.     "Syntactic symbol", and put in a brief message so that people won't
  1017.     quote the symbol (as some novices have been doing).
  1018.  
  1019.     * cc-mode.el (c-guess-basic-semantics):
  1020.     CASE 4B.1, check for member init colon
  1021.     preceding point even after doing a forward-char -1.  Need to skip over
  1022.     constructor parameter list that span multiple lines, with the member
  1023.     init colon hanging on the last of those line.
  1024.     
  1025.     CASE 4D.1. added a backward-sexp call to handle member-init-cont's
  1026.     which are paren-lists broken across multiple lines.
  1027.  
  1028.     * cc-mode.el (c-inhibit-startup-warnings-p):
  1029.     new variable, used in c-emacs-features
  1030.     
  1031.     (c-emacs-features): rewrote feature extraction logic to be based on
  1032.     version numbers. This more closely reflects the current state of
  1033.     affairs of the main Emacs flavors.  There is sanity checking and
  1034.     warning messages built-in too, to help inform the user if there are
  1035.     known problems.
  1036.  
  1037. Mon Feb 21 18:13:53 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1038.  
  1039.     * cc-mode.el (c-guess-basic-semantics):
  1040.     swap case 4A.2 and 4A.3 so that brace-lists
  1041.     are checked before inline-open's, otherwise enums inside of classes
  1042.     are not recognized properly.
  1043.  
  1044.     * cc-mode.el (c-backslashify-current-line):
  1045.     use kill-region instead of kill-line so
  1046.     we don't have to use the kill-lines-magic hack.
  1047.  
  1048.     * cc-mode.el (c-beginning-of-statement-1):
  1049.     do not register last-begin when looking
  1050.     at a case/default label, otherwise statement-cont lines after a case
  1051.     label will not be associated with the correct beginning-of-statement
  1052.  
  1053. Fri Feb 18 16:13:27 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1054.  
  1055.     * cc-mode.el (c-lineup-arglist):
  1056.     must handle arglist-intro lines just like
  1057.     arglist-cont-nonempty lines in the calculation of containing-sexp in
  1058.     the let* statement.
  1059.     
  1060.     (c-lineup-arglist): do not hard-code offset to 2 if at the end, we are
  1061.     still looking at the eol.  I don't know why that was there...
  1062.  
  1063.     * cc-mode.el (c-guess-basic-semantics):
  1064.     CASE 4I, topmost-intro-cont's relpos must
  1065.     be the boi of the beginning-of-statement, otherwise multiple t-i-c
  1066.     lines get marching indentation.
  1067.  
  1068. Thu Feb 17 23:53:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1069.  
  1070.     * cc-mode.el (c-set-style):
  1071.     changed the sense of the optional argument.  Now, style
  1072.     changes modify the global variables by default, except when a non-nil
  1073.     second argument is given.  Only then are buffer-local versions of the
  1074.     variables made.
  1075.  
  1076.     * cc-mode.el (c-lineup-arglist):
  1077.     fixed calculation of containing-sexp for the
  1078.     following code:
  1079.     
  1080.     main()
  1081.     {
  1082.         if( someFunction(someArg,
  1083.                          anotherArg) &&
  1084.             someOtherFunction(someArg,
  1085.                               anotherArg))
  1086.             doThis();
  1087.     }
  1088.  
  1089.     * cc-mode.el (c-class-key):
  1090.     fixed class recognizing regexp so that it doesn't
  1091.     falsely match the word `class' in a template function declaration,
  1092.     e.g.:
  1093.     
  1094.     template<class T>
  1095.     int A<T>::foo(
  1096.  
  1097.     * cc-mode.el (c-mode-map):
  1098.     moved c-indent-defun to C-c C-q.  This should be its
  1099.     final resting place
  1100.     
  1101.     (c-lineup-math): new optional custom indent function, not used by
  1102.     default.
  1103.  
  1104.     * cc-mode.el (c-mode-map):
  1105.     moved c-indent-defun from C-M-x to C-c C-i.  RMS says
  1106.     C-M-x is reserved.
  1107.  
  1108. Wed Feb 16 23:06:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1109.  
  1110.     * cc-mode.el (c++-mode-syntax-table):
  1111.     change : back to default (. == punctuation)
  1112.     syntax class since c-label-key is busted when its (_ == symbol)
  1113.  
  1114.     * cc-mode.el (c-lineup-runin-statements):
  1115.     new lineup function for people who hang
  1116.     the first statement after the open brace.
  1117.     
  1118.     (c-offsets-alist-default): added comment about alternative indentation
  1119.     style for `statement'
  1120.  
  1121. Mon Feb 14 15:53:30 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1122.  
  1123.     * cc-mode.el (c-point):
  1124.     when defun-prompt-regexp is non-nil, b-o-d doesn't leave us
  1125.     at the brace, so we need to skip it as noise.
  1126.  
  1127.     * cc-mode.el (c-indent-defun): if defun-prompt-regexp is non-nil,
  1128.     beginning-of-defun won't leave us at the open brace, so we must skip
  1129.     over defun-prompt-regexp... its noise.
  1130.  
  1131. Fri Feb 11 20:49:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1132.  
  1133.     * cc-mode.el (c-guess-basic-semantics):
  1134.     CASE 14.C, when looking for a ?: construct,
  1135.     and checking for not looking at a :: scope operator, make sure we do
  1136.     this comparison at indent-point, instead of the first non-blank line
  1137.     in the block
  1138.  
  1139.     * cc-mode.el (c-guess-basic-semantics):
  1140.     CASE 8C: if first stream-op is on a
  1141.     separate line (i.e. not on the `cout' line), it should be indented
  1142.     like a statement-cont, not a stream-op.  Relpos in this case is boi of
  1143.     the first preceding non-syntactic-ws line
  1144.  
  1145.     * cc-mode.el: (c-backward-to-start-of-if) (c-backward-to-start-of-do)
  1146.     (c-guess-basic-semantics): It is not enough to search test for
  1147.     looking-at "keyword\\b" since this will not catch "keyword_thing",
  1148.     which is a valid symbol and not a keyword.  There is no equivalent of
  1149.     \\b that matches at the end of a word-or-symbol string.  For now, I
  1150.     changed the looking-at's to "keyword\\b[^_]" which seems to work.
  1151.     There are probably instances of "keyword\\>" that are broken too, but
  1152.     we'll hit them as they occur, since I'm not sure they are broken.
  1153.  
  1154. Thu Feb 10 23:30:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1155.  
  1156.     * cc-mode.el (c-populate-syntax-table):
  1157.     only put c-mode/c++-mode common syntax
  1158.     entries into syntax table.
  1159.     
  1160.     (c++-mode-syntax-table): colon (:) gets symbol class
  1161.  
  1162.     * cc-mode.el:
  1163.     (c-mode-hook) (c++-mode-hook) (c-mode-common-hook): added defvars for
  1164.     completeness.
  1165.  
  1166. Wed Feb  9 17:48:21 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1167.  
  1168.     * Public release: 3.229
  1169.  
  1170.     * cc-mode.el (c-electric-braces):
  1171.     when calculating the initial semantics of the
  1172.     open brace, we only need to insert a temporary newline if there is
  1173.     non-whitespace preceding the brace, on the same line.
  1174.  
  1175.     * cc-mode.el (c-guess-basic-semantics):
  1176.     CASE 4I, don't add `inclass' semantics to
  1177.     the list since the relpos already has any inclass offset added in.
  1178.     Otherwise we get inclass offsets added twice.
  1179.  
  1180.     * cc-mode.el (c-guess-basic-semantics):
  1181.     fixed small problem introduced in version
  1182.     3.235. when skipping lexical whitespace, we must skip [ \t\n].
  1183.     newline wasn't getting skipped.
  1184.  
  1185. Tue Feb  8 22:05:48 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1186.  
  1187.     * cc-mode.el:
  1188.     (c-offsets-alist) (c-offsets-alist-default): added `friend' syntactic
  1189.     symbol for recognition of C++ friend declarations.  Default offset is
  1190.     0.
  1191.     
  1192.     (c-guess-basic-semantics): recognize C++ friend declarations, and add
  1193.     `friend' syntactic symbols as a modifier.
  1194.  
  1195.     * cc-mode.el (c-guess-basic-semantics):
  1196.     when narrowing out enclosing class, and
  1197.     calculating start of region to narrow to, do not skip all syntactic
  1198.     ws, just lexical whitespace (change c-forward-syntactic-ws call to
  1199.     skip-chars-forward). Otherwise, you could skip into the middle of a C
  1200.     comment block and not figure out that what you're looking at is a `c'
  1201.     syntactic symbol.
  1202.  
  1203.     * cc-mode.el:
  1204.     (c-offsets-alist) (c-offsets-alist-default) (c-guess-basic-semantics):
  1205.     added defun-block-intro syntactic symbol which controls indentation
  1206.     for the first line in a top-level defun, analogous to
  1207.     statement-block-intro.  (CASE 14.E)
  1208.  
  1209.     * cc-mode.el (c-indent-defun):
  1210.     catch any errors that occur in c-indent-exp and make
  1211.     sure point is restored and the temporary mark is destroyed.
  1212.  
  1213.     * cc-mode.el: (c-untame-characters) (c-backscan-limit) (c-tame-insert)
  1214.     (c-tame-comments) (c-emacs18-fsws) (c-emacs18-bsws) (c-emacs18-il):
  1215.     moved these defuns and vars to cc-mode-18.el file.
  1216.     
  1217.     (c-mode-map): do not install Emacs 18-only bindings
  1218.     
  1219.     (c-populate-syntax-table): do not install Emacs 18-only syntax table
  1220.     entries
  1221.     
  1222.     (c-insert-and-tame): renamed to c-insert-special-chars and make this
  1223.     call only self-insert-command.  Don't worry about Emacs 18
  1224.     compatibility.
  1225.     
  1226.     (c-mark-function) (c-common-init): Don't worry about Emacs 18
  1227.     compatibility.
  1228.     
  1229.     (c-emacs19-accurate-fsws): renamed to c-forward-syntactic-ws. Don't
  1230.     worry about Emacs 18 compatibility.
  1231.     
  1232.     (c-emacs19-accurate-bsws): renamed to c-backward-syntactic-ws. Don't
  1233.     worry about Emacs 18 compatibility.
  1234.     
  1235.     (c-8bit-il): renamed to c-in-literal. Don't worry about Emacs 18
  1236.     compatibility.
  1237.     
  1238.     (c-submit-bug-report): remove reporting of c-backscan-limit and
  1239.     c-untame-characters since these are for Emacs 18 only.
  1240.  
  1241. Wed Feb  2 00:00:40 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1242.  
  1243.     * cc-mode.el (c-lineup-arglist):
  1244.     add kludge for arglist-cont-nonempty to get
  1245.     correct indentation.
  1246.     
  1247.     (c-guess-basic-semantics): CASE 5D: arglist-cont-nonempty's relpos
  1248.     needs to be boi of containing-sexp paren.  this is good for + offset,
  1249.     but bad for c-lineup-arglist, so add the kludge described above.
  1250.  
  1251. Tue Feb  1 22:14:35 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1252.  
  1253.     * cc-mode.el (c-inside-bracelist-p):
  1254.     enum keyword could be preceded by a typedef
  1255.     keyword
  1256.  
  1257.     * cc-mode.el (c-comment-region):
  1258.     removed as obsolete, use comment-region instead.
  1259.     Put the new comment-region function in, but commented out.
  1260.  
  1261.     * cc-mode.el (c-default-macroize-column):
  1262.     changed to c-backslash-column. Default
  1263.     value changed to 48 from 78.  This is merged from c-mode.el
  1264.     
  1265.     (c-macroize-region): changed to c-backslash-region for c-mode.el merge.
  1266.  
  1267. Mon Jan 31 22:57:05 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1268.  
  1269.     * cc-mode.el (c-guess-basic-semantics):
  1270.     CASE 8B.3: instead of try-block-open, which
  1271.     is now gone, put statement-cont, block-open on semantics list.
  1272.     Eventually I may call a recognition hook, and/or exceptions probably
  1273.     fall through to here.
  1274.  
  1275.     * cc-mode.el (c-guess-basic-semantics):
  1276.     CASE 5E. go to beginning of statement
  1277.     before looking getting relpos, so that we properly pick up nested
  1278.     argument lists.
  1279.  
  1280.     * cc-mode.el (c-common-init):
  1281.     better setting up of Lucid menubar (use mode-name as
  1282.     menu bar title)
  1283.     
  1284.     (c-popup-menu): use mode-name in menu title
  1285.  
  1286.     * cc-mode.el (c-keep-region-active):
  1287.     shouldn't check for interactive-p in tests
  1288.     
  1289.     (c-submit-bug-report): don't keep region active.
  1290.  
  1291.     * cc-mode.el (c-keep-region-active): no-op for FSF 19
  1292.     
  1293.     (c-set-style) (c-beginning-of-statement) (c-end-of-statement)
  1294.     (c-up-conditional) (c-backward-conditional) (c-forward-conditional)
  1295.     (c-popup-menu): added a call to c-keep-region-active
  1296.     
  1297.     (c-tame-comments) (c-indent-command) (c-indent-exp) (c-indent-defun)
  1298.     (c-indent-region) (c-macroize-region) (c-comment-region): removed call
  1299.     to c-keep-region-active
  1300.  
  1301. Sun Jan 30 20:22:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1302.  
  1303.     * cc-mode.el (c-mode-map):
  1304.     remapped c-toggle-hungry-state to C-c C-d so it would
  1305.     not interfer with standard C-c C-h key prefix help mapping
  1306.  
  1307. Fri Jan 28 22:16:29 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1308.  
  1309.     * cc-mode.el (c-switch-label-key):
  1310.     fixed what can occur between the `case' keyword
  1311.     and the colon.  Its any amount of whitespace, followed by a single,
  1312.     non-whitespace character, followed by any number of other characters.
  1313.  
  1314. Thu Jan 27 21:15:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1315.  
  1316.     * cc-mode.el (c-fill-paragraph):
  1317.     much better for C++ style comments. 1. does not
  1318.     munge up font-lock regions by inserting/deleting the intended
  1319.     fill-prefix. 2. does not assume that leading whitespace before // is
  1320.     spaces, *but* fill-prefix must be consistent for every line in the
  1321.     region.
  1322.  
  1323.     * cc-mode.el (c-mode-menu): moved this higher up in file
  1324.  
  1325.     * cc-mode.el (c-end-of-statement): simple paren mismatch in call to
  1326.     c-beginning-of-statement
  1327.  
  1328.     * cc-mode.el (c-guess-basic-semantics):
  1329.     CASE 2, skip over any preceding blank lines
  1330.     that can occur before the comment. This fixes comment indentation for
  1331.     the second and following paragraphs in a multi-paragraph C block
  1332.     comment region with no leading stars.
  1333.     
  1334.     (c-lineup-C-comment): don't assume relpos is at the beginning of the
  1335.     line (even though it usually is).
  1336.  
  1337.     * cc-mode.el (c-switch-label-key):
  1338.     simplify description of what can follow a 'case' tag
  1339.  
  1340.     * cc-mode.el: Use copy-alist instead of c-copy-sequence
  1341.  
  1342.     * cc-mode.el (c-common-init):
  1343.     fix the way c-mode-menu is added to the Lucid menubar
  1344.     so existing menubars aren't clobbered
  1345.  
  1346.     * cc-mode.el (c-copy-sequence):
  1347.     workaround for FSF 19.22 bug in copy-sequence
  1348.  
  1349. Wed Jan 26 22:38:20 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1350.  
  1351.     * cc-mode.el (c-lineup-comment): renamed from c-indent-for-comment
  1352.     
  1353.     (c-lineup-comment): call c-comment-indent when a comment-only line's
  1354.     indentation is at or to the right of comment-column.
  1355.     
  1356.     (c-guess-basic-semantics): when a comment-only line's indentation is
  1357.     at or to the right of comment-column, only 'comment-intro is on the
  1358.     semantics list since the comment does not indent relative to a
  1359.     non-comment line would get indented.
  1360.  
  1361.     * cc-mode.el (c-lineup-arglist):
  1362.     now correctly handles arglist-close langelems
  1363.     (i.e. closing parens in an arglist)
  1364.  
  1365.     * cc-mode.el (c-offsets-alist-default):
  1366.     new constant containing unchanging default
  1367.     settings for langelems
  1368.     
  1369.     (c-offsets-alist): value is set as a distinct copy of
  1370.     c-offsets-alist-default.
  1371.     
  1372.     (c-set-style): if 'c-offsets-alist is found in style, first reset the
  1373.     value of this variable to c-offses-alist-default, then change only
  1374.     those langelems that differ.
  1375.  
  1376.     * cc-mode.el (c-style-alist):
  1377.     changed defconst to defvar. removed comments from
  1378.     c-mode merge
  1379.  
  1380.     * cc-mode.el (c-indent-region): minor format change
  1381.  
  1382.     * cc-mode.el (c-indent-region):
  1383.     merged in RMS's latest c-indent-region. Added a
  1384.     skip of blank lines before the current line is indented. Recalculate
  1385.     beginning-of-defun lim inside of top-level while loop so that
  1386.     back-parsing is further restricted properly, speeding indentation
  1387.     calculation.
  1388.  
  1389. Tue Jan 25 18:01:01 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1390.  
  1391.     * cc-mode.el (c-fill-paragraph): small fix to RMS's paren level typo
  1392.  
  1393.     * cc-mode.el (c-fill-paragraph):
  1394.     fixed (hopefully) obvious parenthesis level typo
  1395.  
  1396.     * cc-mode.el (c-fill-paragraph): added RMS's new C++ aware version
  1397.     
  1398.     (c-mode-map): put back the binding of M-q to c-fill-paragraph
  1399.  
  1400. Mon Jan 24 22:52:53 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1401.  
  1402.     * cc-mode.el (c-update-modeline): typo: use c-hungry-delete-key
  1403.  
  1404.     * cc-mode.el (c-auto-hungry-string): minor-mode-alist variable
  1405.     
  1406.     (c-common-init): auto-hungry designation string happens on
  1407.     minor-mode-alist now
  1408.     
  1409.     (c-update-modeline): sets the c-auto-hungry-string
  1410.  
  1411.     * cc-mode.el (c-electric-semi&comma):
  1412.     only re-indent line when c-auto-newline is non-nil
  1413.  
  1414.     * cc-mode.el (c-mode-menu):
  1415.     new Lucid menu variable for popup and menubar
  1416.     
  1417.     (c-popup-menu): command for popping up a menu in Lemacs
  1418.     
  1419.     (c-mode-map): FSF 19's menu initialization stuff is moved to here. Add
  1420.     binding for Lemacs to put c-popup-menu on button 3.
  1421.     
  1422.     (c-common-init): put c-mode-menu on buffer-local menubar for Lucid
  1423.  
  1424. Fri Jan 21 22:36:03 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1425.  
  1426.     * cc-mode.el:
  1427.     (c-up-block) (c-down-block): removed.  backward-up-list and down-list
  1428.     do the job already
  1429.  
  1430.     * cc-mode.el: (cc-mode.el) comment improvements
  1431.     
  1432.     (c-mode-map): a few merges from lemacs, but commented out for now.
  1433.     
  1434.     (c-insert-brackets) (c-insert-braces): taken from lemacs, but
  1435.     commented out for now
  1436.     
  1437.     (cc-mode.el): menus added from FSF emacs.  Still need menus for
  1438.     lemacs.
  1439.  
  1440. Fri Jan 14 18:59:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1441.  
  1442.     * cc-mode.el (cc-mode.el): fixed typo on make-obsolete-variable
  1443.  
  1444.     * cc-mode.el (cc-mode.el): added all make-variable-obsolete calls
  1445.  
  1446. Thu Jan 13 23:25:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1447.  
  1448.     * cc-mode.el (c-guess-basic-semantics):
  1449.     CASE 8A substatement. relpos is boi of
  1450.     placeholder
  1451.  
  1452.     * cc-mode.el (c-beginning-of-statement-1):
  1453.     skip back over syntactic ws before
  1454.     checking bobp in while condition
  1455.  
  1456. Wed Jan 12 14:24:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1457.  
  1458.     * cc-mode.el (cc-mode.el): only v19 has the make-obsolete calls
  1459.  
  1460.     * cc-mode.el (c-guess-basic-semantics):
  1461.     CASE 8B.3 now returns a try-block-open, but
  1462.     exceptions aren't yet fully supported.
  1463.  
  1464.     * cc-mode.el (c-beginning-of-statement):
  1465.     when in a comment, or looking at the
  1466.     beginning of a comment, only call forward-sentence if not called
  1467.     interactively.  Thus programmatically, this function always goes back
  1468.     to the real beginning-of-statement.
  1469.  
  1470.     * cc-mode.el (cc-mode.el): changes to comments at top of file
  1471.  
  1472.     * cc-mode.el:
  1473.     (c-common-init) (c-style-name) (c-set-style): removed c-style-name,
  1474.     and no longer put style name on minor mode list
  1475.  
  1476.     * cc-mode.el:
  1477.     (c-set-style) (c-style-alist): vastly verbosified docstrings
  1478.  
  1479. Tue Jan 11 23:50:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1480.  
  1481.     * cc-mode.el (c-offsets-alist): vastly verbosified docstring.
  1482.     
  1483.     (cc-mode.el): LANGELEM in docstrings are changed to "syntactic element
  1484.     symbols" for clarity (?!)
  1485.  
  1486.     * cc-mode.el: (c-electric-colon) (c-offsets-alist) (c-macroize-region)
  1487.     (c-block-comments-indent-p) (c-untame-characters)
  1488.     (c-toggle-auto-state) (c-toggle-hungry-state) (c-macroize-region):
  1489.     minor docstring mods
  1490.  
  1491.     * cc-mode.el (c-electric-colon): minor docstring mod
  1492.     
  1493.     (c-submit-bug-report): removed c-auto-hungry-initial-state from
  1494.     reported var list
  1495.  
  1496.     * cc-mode.el (c-offsets-alist):
  1497.     improve the docstrings for brace-list-* langelems
  1498.  
  1499.     * cc-mode.el (c-auto-hungry-initial-state):
  1500.     obsolete variable, use c-auto-newline
  1501.     and c-hungry-delete-key variables instead
  1502.     
  1503.     (c-mode) (c++-mode): run-hooks is now the last thing
  1504.     
  1505.     (c-set-auto-hungry-state) (c-make-region-active): removed
  1506.     
  1507.     (c-keep-region-active): is now a defun
  1508.     
  1509.     (c-update-modeline) (c-calculate-state): added
  1510.     
  1511.     (c-toggle-auto-state) (c-toggle-hungry-state)
  1512.     (c-toggle-auto-hungry-state): simplified vastly. also, docstrings now
  1513.     explain what the features do.
  1514.  
  1515.     * cc-mode.el (cc-mode.el):
  1516.     added an fset of c++-beginning-of-defun for lemacs 19.9
  1517.     lossage
  1518.  
  1519.     * cc-mode.el (c-cleanup-list):
  1520.     improved docstring, when do clean ups take place?
  1521.  
  1522.     * cc-mode.el (c-cleanup-list): minor docstring typo fix
  1523.  
  1524.     * cc-mode.el (cc-mode.el): changed FSFmacs to FSF Emacs
  1525.  
  1526.     * cc-mode.el: added my name to 1993 and 1994 copyrights
  1527.  
  1528. Mon Jan 10 22:10:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1529.  
  1530.     * cc-mode.el (c-set-offset):
  1531.     conversion of offset to a number in the interactive
  1532.     list glom section was missing negative numbers due to the leading
  1533.     minus sign
  1534.  
  1535.     * cc-mode.el (c-beginning-of-statement-1):
  1536.     on error, skip backwards over +!~ in
  1537.     addition to other chars skipped
  1538.  
  1539. Sat Jan  8 03:20:49 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1540.  
  1541.     * cc-mode.el (c-electric-pound):
  1542.     fixed after-functionality positioning when point
  1543.     is at bolp before # is installed
  1544.  
  1545.     * cc-mode.el (c-guess-basic-semantics):
  1546.     CASE 13, inline-close relpos should be boi
  1547.     of the beginning-of-statement relpos
  1548.  
  1549.     * cc-mode.el (c-beginning-of-statement-1):
  1550.      only do the skip-chars-backwards in the
  1551.     failure of the condition-case statement.  also, add the `-' character
  1552.     to the list of skippage
  1553.  
  1554. Fri Jan  7 23:27:20 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1555.  
  1556.     * cc-mode.el (c-beginning-of-statement-1):
  1557.     do not let backward scanning stop inside
  1558.     a literal.  use c-in-literal to stop this, which really catches only
  1559.     preprocs
  1560.  
  1561.     * cc-mode.el (c-guess-basic-semantics):
  1562.     CASE 13, block-close relpos should be boi
  1563.     of relpos to catch "} else {" constructs
  1564.  
  1565.     * cc-mode.el: (c-forward-conditional) (c-indent-region)
  1566.     (c-beginning-of-inheritance-list) (c-backward-to-start-of-do)
  1567.     (c-backward-to-start-of-if): removed unused let-bound variables as per
  1568.     output of byte compiler
  1569.  
  1570.     * cc-mode.el: better messages about the necessary makunbounds
  1571.  
  1572. Thu Jan  6 18:52:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1573.  
  1574.     * cc-mode.el (c-beginning-of-statement-1): recognize "else if" clauses
  1575.     
  1576.     (c-guess-basic-semantics): CASE 8A recognizes "else if" clauses
  1577.  
  1578. Mon Jan  3 23:01:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1579.  
  1580.     * cc-mode.el: upped the copyright notice date
  1581.  
  1582.     * cc-mode.el (c-beginning-of-statement-1):
  1583.     before calculating last-begin, skip over
  1584.     any bogus characters like *&:. for the following situations:
  1585.     
  1586.         if(::foo(),
  1587.         if(.0123,
  1588.         if(&blatz,
  1589.         if(*bar,
  1590.  
  1591.     * cc-mode.el (c-guess-basic-semantics):
  1592.     CASE 8A.  do and else clauses aren't
  1593.     followed by a paren list, so we should only skip forward over 1 sexp
  1594.     in those cases.
  1595.  
  1596. Wed Dec 29 18:06:12 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1597.  
  1598.     * cc-mode.el (c-lineup-multi-inher):
  1599.     skip syntactic ws if there is only a comment
  1600.     on the end of the line containing the opening colon
  1601.  
  1602.     * cc-mode.el (c-guess-basic-semantics): CASE 5C, don't check for
  1603.     c-conditional-statement, since only "for" can have multiple
  1604.     substatements
  1605.  
  1606.     * cc-mode.el (c-guess-basic-semantics):
  1607.     CASE 8: added colon to list of characters
  1608.     that don't continue a statement, all other cases will be caught later
  1609.     on (I hope).
  1610.  
  1611.     * cc-mode.el (c-guess-basic-semantics):
  1612.     rewrote and re-arranged CASE 5 subcases to
  1613.     correctly identifiy for-list substatements, etc.  looks like
  1614.     paren-lists now work pretty well.
  1615.  
  1616. Tue Dec 28 16:36:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1617.  
  1618.     * cc-mode.el (c-guess-basic-semantics):
  1619.     fixed CASE 5C to use new semantics for
  1620.     c-beginning-of-statement.
  1621.  
  1622.     * cc-mode.el (c-beginning-of-statement-1):
  1623.     make sure searching stops correctly at
  1624.     conditional statements (if/while,...etc) so that substatements are
  1625.     properly recognized
  1626.  
  1627.     * cc-mode.el (c-beginning-of-statement):
  1628.     make sure we're left at or after lim
  1629.  
  1630.     * cc-mode.el: (c-electric-brace) (c-electric-slash) (c-electric-star)
  1631.     (c-electric-semi&comma) (c-electric-colon): let-bind
  1632.     c-echo-semantic-information-p to nil to shut up information printing
  1633.     in inappropriate places
  1634.  
  1635.     * cc-mode.el (c-guess-basic-semantics):
  1636.     fixes to CASE 8 for new semantics of
  1637.     c-beginning-of-statement.  Added a test of placeholder !=
  1638.     containing-sexp in top-level test.  CASE 8D, progn => save-excursion
  1639.     so correct statement start can be found
  1640.  
  1641.     * cc-mode.el:
  1642.     (c-beginning-of-statement) (c-end-of-statement): minor clean up.
  1643.     removed my old c-beginning-of-statement -- we'll go with FSF's and fix
  1644.     it as need bee
  1645.  
  1646. Mon Dec 27 23:25:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1647.  
  1648.     * cc-mode.el:
  1649.     (c-beginning-of-statement) (c-end-of-statement): add another optional
  1650.     argument, lim
  1651.     
  1652.     (c-guess-basic-semantics): corrected to use new arg list for the above
  1653.  
  1654.     * cc-mode.el:
  1655.     (c-beginning-of-statement) (c-end-of-statement): check for argument ==
  1656.     nil (optional arg not supplied)
  1657.  
  1658.     * cc-mode.el:
  1659.     (c-beginning-of-statement) (c-end-of-statement): make arg optional
  1660.  
  1661.     * cc-mode.el (c-beginning-of-statement, et al):
  1662.     try using BOCM's version to see if
  1663.     it works any better
  1664.  
  1665.     * cc-mode.el (c-set-style): put a space in front of c-style name
  1666.     
  1667.     (c-common-init): only hack on c-style-name once!
  1668.  
  1669.     * cc-mode.el: provide cc-mode, not c-mode
  1670.  
  1671.     * cc-mode.el (c-style-name): new variable, buffer local
  1672.     
  1673.     (c-common-init): hack on c-style-name to the minor-mode alist
  1674.     
  1675.     (c-set-style): set c-style-name variable for minor-mode
  1676.  
  1677.     * cc-mode.el (c-conditional-key): added "switch"
  1678.     
  1679.     (c-guess-basic-semantics): renumbered CASE 8 subcases, no substantive
  1680.     changes.
  1681.     
  1682.     (c-guess-basic-semantics): added dummy CASE 8B.3 to generate an error.
  1683.     I don't know what constructs fall through this case.
  1684.  
  1685.     * cc-mode.el (c-symbol-key):
  1686.     put this back in and fixed all the other -key's to use it
  1687.  
  1688.     * cc-mode.el (c-set-auto-hungry-state):
  1689.     small typo in check for force-mode-line-update
  1690.  
  1691.     * cc-mode.el: use force-mode-line-update where appropriate
  1692.  
  1693.     * cc-mode.el: added autoload directives
  1694.  
  1695. Wed Dec 22 20:52:32 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1696.  
  1697.     * cc-mode.el (c-inside-bracelist-p):
  1698.     fixed a bug when no spaces were between the =
  1699.     char and open brace in an aggregate list
  1700.  
  1701.     * cc-mode.el (c-switch-label-key): fixed to recognize negative numbers
  1702.  
  1703.     * cc-mode.el:
  1704.     (c-forward-into-nomenclature) (c-backward-into-nomenclature): new
  1705.     commands, but as yet unbound
  1706.  
  1707.     * cc-mode.el (c-guess-basic-semantics):
  1708.     CASE 7C: look for block-open modifier
  1709.  
  1710. Tue Dec 21 22:55:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1711.  
  1712.     * cc-mode.el (c-guess-basic-semantics):
  1713.     CASE 7 improved but nested brace-lists are
  1714.     still not perfect.  Do I need to add another langelem??? blech.
  1715.  
  1716.     * cc-mode.el (c-inside-bracelist-p):
  1717.     new function to calculate whether we're inside
  1718.     a brace list or not
  1719.     
  1720.     (c-guess-basic-semantics): use c-inside-bracelist-p where appropriate
  1721.  
  1722.     * cc-mode.el (c-guess-basic-semantics):
  1723.     CASE 7B's (brace-list-close) relpos is not
  1724.     boi of bo-stmt, instead its boi of containing-sexp
  1725.  
  1726.     * cc-mode.el (c-offsets-alist):
  1727.     added brace-list-close, brace-list-intro,
  1728.     brace-list-entry
  1729.     
  1730.     (c-guess-basic-semantics): added logic to recognize brace-list-open
  1731.     new langelems
  1732.  
  1733.     * cc-mode.el (c-hanging-braces-alist):
  1734.     docstring addition: brace-list-open
  1735.     
  1736.     (c-offsets-alist): added brace-list-open
  1737.     
  1738.     (c-electric-brace): added logic to hang brace-list-open's
  1739.     
  1740.     (c-guess-basic-semantics): added logic to recognize brace-list-open's
  1741.  
  1742.     * cc-mode.el (c-mode-map): removed binding to undefined c-match-paren
  1743.  
  1744.     * cc-mode.el (c-semantics): new variable
  1745.     
  1746.     (c-indent-via-language-element): use globally advertised c-semantics
  1747.     variable now.
  1748.     
  1749.     (c-offsets-alist): better docstring, describes c-semantics
  1750.  
  1751.     * cc-mode.el (c-adaptive-block-open):
  1752.     new function, but block-open doesn't use it
  1753.     by default yet
  1754.     
  1755.     (c-guess-basic-semantics): moved M2 (block-open) test into body of
  1756.     defun instead of at the end -- to many special case tests
  1757.  
  1758. Mon Dec 20 17:55:38 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1759.  
  1760.     * cc-mode.el (c-indent-command):
  1761.     guarantee that c-tab-always-indent == nil has the
  1762.     same semantics as in BOCM
  1763.  
  1764.     * cc-mode.el (cc-mode.el): pulled in bocm's beginning-of-statement,
  1765.     end-of-statement and related defuns, but I still need to make a pass
  1766.     through them.
  1767.     
  1768.     (c-up-conditional) (c-backward-conditional) (c-forward-conditional):
  1769.     yanked in verbatim from c-mode.el
  1770.     
  1771.     (c-backslash-region): fset from c-macroize-region.  also, we're
  1772.     leaving c-backslash-column commented out. use
  1773.     c-default-macroize-column instead.
  1774.  
  1775.     * cc-mode.el (c-fill-paragraph): removed, use filladapt instead
  1776.     
  1777.     (c-comment-indent): adopted from c-mode.el, but fixed to handle C++
  1778.     comments
  1779.  
  1780.     * cc-mode.el (c-mode.el):
  1781.     moved some defuns and defmacros around. no substantive changes
  1782.  
  1783.     * cc-mode.el (c-symbol-key): obsolete, use \\s_ syntax class instead
  1784.     
  1785.     (c-protection-key): new defconst
  1786.     
  1787.     (c-case-statement-key): renamed to c-switch-label-key
  1788.  
  1789.     * cc-mode.el (c-lineup-streamop):
  1790.     search for stream operator, be careful of
  1791.     singular less than, greater than symbol.
  1792.  
  1793. Fri Dec 17 21:42:27 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1794.  
  1795.     * cc-mode.el:
  1796.     fixed semantics for c-macroize-region and c-comment-region
  1797.  
  1798.     * cc-mode.el (c-guess-basic-semantics):
  1799.     don't put block-open on semantics list if
  1800.     other brace open symbols are already there
  1801.  
  1802. Thu Dec 16 20:49:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1803.  
  1804.     * cc-mode.el (c-emacs-features): minor docstring change
  1805.  
  1806.     * cc-mode.el (c-set-offset):
  1807.     new optional add-p arg. when non-nil, require-match on
  1808.     completion is inhibited and new langelem symbols can be added to the
  1809.     c-offsets-alist.
  1810.     
  1811.     (c-guess-basic-semantics): CASE 7C has been extended to properly
  1812.     recognize conditional's substatements.  CASE 7D now handles continued
  1813.     statements.  CASE 7A now recognizes only func local class opening
  1814.     braces, which means 7C + M2 will catch substatement block-opens.
  1815.     
  1816.     (c-offsets-alist): added substatement langelem
  1817.  
  1818.     * cc-mode.el (c-strict-semantics-p):
  1819.     default value to nil for debugging purposes
  1820.     
  1821.     (c-guess-basic-semantics): block-open langelem is now a relpos-less
  1822.     langelem because it is really a modifier on the basic langelem of the
  1823.     line.  Specifically: Case M2 added; CASE 7A.2 now places just a
  1824.     statement-cont langelem on semantics; CASE 13.B is completely removed.
  1825.     
  1826.     (c-offsets-alist): block-open default offset is now 0.
  1827.  
  1828. Mon Dec 13 15:29:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1829.  
  1830.     * cc-mode.el (c-guess-basic-semantics):
  1831.     now it does the the test for c++-mode to
  1832.     save a potential funcall in c-mode.
  1833.     
  1834.     (c-search-uplist-for-class): fixed bug where c-in-literal test was
  1835.     testing end-point of parse-partial-sexp, not the classkey search begin
  1836.     point.
  1837.  
  1838. Thu Dec  9 19:02:25 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1839.  
  1840.     * cc-mode.el (c++-mode-map): fixed FSF call to set-keymap-parent
  1841.  
  1842.     * cc-mode.el (c++-mode-map):
  1843.     JWZ contributed a better way to share keymaps for v18
  1844.     using nconc
  1845.     
  1846.     (c-populate-map): obsolete, move all define-keys into c-mode-map if
  1847.     statement
  1848.  
  1849.     * cc-mode.el (c-emacs-features):
  1850.     for Emacs 19's, add a flavor member to distinguish
  1851.     between FSF19 and Lucid19.
  1852.     
  1853.     (c++-mode-map): for Emacs 19's, inherit c++-mode-map from c-mode-map.
  1854.     Handle FSF/Lucid properly and handle GNU18 the hard way.
  1855.  
  1856. Wed Dec  8 22:43:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1857.  
  1858.     * cc-mode.el (c-down-block):
  1859.     changed call of c-beginning-of-block to c-up-block
  1860.  
  1861.     * cc-mode.el:
  1862.     (c-populate-map) (c-populate-syntax-table): new funcs to consolatate
  1863.     setting these structures
  1864.     
  1865.     (c-mode-map) (c++-mode-map): get as close as we can with BOCM's
  1866.     mappings, but there are still some inconsistencies I need to clean up
  1867.  
  1868. Tue Dec  7 23:52:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1869.  
  1870.     * cc-mode.el (c-set-style): added functionality
  1871.     
  1872.     (c-macro-expand): added autoload
  1873.     
  1874.     (documentation and docstrings): updated many places
  1875.     
  1876.     (c-set-offset): better interactive spec
  1877.     
  1878.     (c-fill-paragraph): stolen from c-mode, but not looked at yet
  1879.     
  1880.     (cc-mode.el): added fset compatibility with c-mode
  1881.     
  1882.     NOTE: THERE ARE STILL SOME FUNCTIONS I HAVEN'T MOVED HERE YET.
  1883.  
  1884. Mon Dec  6 15:46:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1885.  
  1886.     * cc-mode.el (c-guess-basic-semantics):
  1887.     CASE 5D is only a statement-cont if the
  1888.     beginning-of-statement is not bound by continued-sexp
  1889.  
  1890.     * cc-mode.el: fixed a coupble of cc-emacs-features to c-emacs-features
  1891.  
  1892. Fri Dec  3 23:05:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1893.  
  1894.     * cc-mode.el (cc-mode.el):
  1895.     changed all symbols from cc-<thing> to c-<thing>, except
  1896.     where both c-<thing> and c++-<thing> are needed:
  1897.     c++-mode-abbrev-table, c++-mode-map, c++-mode-syntax-table,
  1898.     
  1899.     (c-mode-common-hook): new common hook name
  1900.     
  1901.     (c-mode-map): don't add c-scope-operator.
  1902.  
  1903. Thu Dec  2 00:59:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1904.  
  1905.     * cc-mode.el (cc-guess-basic-semantics):
  1906.     CASE 7B, its possible that the line that
  1907.     placeholder points to does not contain the first streamop.  This can
  1908.     be the case if the streamop line follows an `if' clause.
  1909.  
  1910. Wed Dec  1 23:35:44 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1911.  
  1912.     * cc-mode.el (cc-macroize-region):
  1913.     simplified so begin/end semantics are identical
  1914.     to cc-comment-region.
  1915.     
  1916.     (cc-backslashify-current-line): do not (forward-char -1) if eol ==
  1917.     bol.  Also, must let-bind kill-lines-magic to nil so that blank line,
  1918.     with only a \ on it will not consume the newline character
  1919.  
  1920. Mon Nov 29 22:50:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1921.  
  1922.     * cc-mode.el (cc-indent-region):
  1923.     only generate an error on non-open paren/brace
  1924.     when shutup-p is nil
  1925.  
  1926.     * cc-mode.el:
  1927.     (cc-uncomment-region) (cc-comment-region): combined into 1 function,
  1928.     bound to C-c C-c and behavior analogous to cc-macroize-region.
  1929.     
  1930.     (cc-up-block) (cc-down-block): new commands, bound to C-c C-u and C-c
  1931.     C-d respectively.
  1932.  
  1933.     * cc-mode.el (cc-indent-exp):
  1934.     don't indent line with cc-indent-via-language-element
  1935.     if line is blank
  1936.  
  1937.     * cc-mode.el (cc-electric-brace):
  1938.     use (boundp 'blink-paren-function) as emacs
  1939.     version test, not cc-emacs-features.  The latter breaks on Emacs18's
  1940.     with the syntax patch
  1941.  
  1942.     * cc-mode.el (cc-guess-basic-semantics):
  1943.     fixed the comment-intro regexp to ignore
  1944.     newlines. (spaces and tabs only)
  1945.  
  1946. Fri Nov 26 19:01:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1947.  
  1948.     * cc-mode.el (cc-search-uplist-for-classkey):
  1949.     fixed two small bugs. first, the cdr
  1950.     of foundp should be cc-point boi to catch any template prefix on the
  1951.     class key (remember we're searching backwards now -- maybe we should
  1952.     search forward, eh?).  Also, we have to set donep to (not foundp) so
  1953.     that the search ends when we haven't found any classkey
  1954.  
  1955.     * cc-mode.el (cc-guess-basic-semantics):
  1956.     CASE 13.D make sure we're not looking at a
  1957.     globally scoped function call
  1958.  
  1959.     * cc-mode.el (cc-guess-basic-semantics):
  1960.     arglist-close should relpos boi of
  1961.     containing-sexp
  1962.     
  1963.     (cc-change-semantic-symbol-offset): fixed setqcdr typo
  1964.     
  1965.     (cc-offsets-alist): arglist-close default is now +
  1966.  
  1967.     * cc-mode.el (cc-beginning-of-statement):
  1968.     fix problem when crossing a paren level
  1969.     (i.e. the cc-safe forward-sexp call fails).  just move back a space
  1970.     and keep going.
  1971.     
  1972.     (cc-guess-basic-semantics): expand CASE 5C test and CASE 5E relpos
  1973.     calculation
  1974.  
  1975. Wed Nov 24 22:54:31 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1976.  
  1977.     * cc-mode.el (cc-safe):
  1978.     added this macro back in -- it seems to be useful
  1979.     
  1980.     (cc-beginning-of-statement): really improved this a lot. we only go
  1981.     back a sexp if we aren't already at the beginning of indentation.
  1982.     This is now a more generally useful function since it seems to do the
  1983.     right thing under all circumstances.
  1984.     
  1985.     (cc-guess-basic-semantics): lots of changes to use the new cc-b-o-s
  1986.     function.  All known indentations after hanging braces are now fixed.
  1987.     This includes case 4D.5, CASE 7, CASE 12, and CASE 13.F.  Are there
  1988.     others?
  1989.  
  1990.     * cc-mode.el (cc-offsets-alist): added knr-argdecl offset
  1991.     
  1992.     (cc-change-semantic-symbol-offset): allow addition of new langelem
  1993.     symbols with universal arg
  1994.     
  1995.     (cc-guess-basic-semantics): added recognition of subsequent
  1996.     knr-argdecl langelems in cc-c-mode only
  1997.  
  1998.     * cc-mode.el (cc-electric-brace):
  1999.     in brace-else-brace cleanup, I forgot to insert
  2000.     the new "} else {" string after deleting the old string!
  2001.  
  2002.     * cc-mode.el:
  2003.     (cc-back-block) (cc-safe-uplist) (cc-safe-downlist): obsolete
  2004.     
  2005.     (cc-search-uplist-for-classkey): completely rewritten for speed. it
  2006.     now uses re-search-backwards limited to two bod's back.  Orders of
  2007.     magnitude faster when operating towards the end of a large file.  In
  2008.     fact exec time is not buffer size dependent anymore (but like
  2009.     everything else, it is bod dependent of course).
  2010.     
  2011.     (cc-guess-basic-semantics): fixed cases 4, 7, and 12 to work with the
  2012.     new cc-search-uplist-for-classkey
  2013.  
  2014. Tue Nov 23 22:41:41 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2015.  
  2016.     * cc-mode.el (cc-guess-basic-semantics):
  2017.     fixed case 4F. if a class-close is found,
  2018.     it should indent relative to the class declaration, not the opening
  2019.     brace (i.e. the cdr of inclass-p, not the car)
  2020.  
  2021.     * cc-mode.el (cc-guess-basic-semantics):
  2022.     fix CASE 12's determination of the type of
  2023.     langelem that a brace closes.
  2024.  
  2025.     * cc-mode.el (cc-c++-mode-syntax-table):
  2026.     switched A/B comment styles as per Paul
  2027.     Smith's FSFmacs patch
  2028.     
  2029.     (cc-1bit-il): switched A/B comment styles as per Paul Smith's FSFmacs
  2030.     patch
  2031.  
  2032.     * cc-mode.el (cc-search-uplist-for-classkey):
  2033.     only search when in a C++ buffer.  C
  2034.     buffers have no enclosing class!
  2035.  
  2036.     * cc-mode.el (cc-electric-pound):
  2037.     oops, forgot to prefix-numeric-value arg on the
  2038.     self-insert-command
  2039.  
  2040.     * cc-mode.el (cc-mark-function):
  2041.     must funcall the second call to push-mark since
  2042.     v18 only accepts 2 arguments, not the 3 of v19.
  2043.     
  2044.     (cc-electric-brace): fix the blink-paren-function/-hook mismatch for
  2045.     v18 vs. v19.
  2046.     
  2047.     (cc-point): added the (,@ nil) form as a workaround for v18's
  2048.     backquote bug.  Doesn't seem to hurt us for v19 so I left it in for
  2049.     everyone.
  2050.  
  2051. Mon Nov 22 23:29:19 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2052.  
  2053.     * cc-mode.el (cc-guess-basic-semantics):
  2054.     CASE 12, always return boi of the line
  2055.     that containing-sexp is on, not just for block-close langelem
  2056.  
  2057.     * cc-mode.el (cc-search-uplist-for-classkey):
  2058.     make backward searching slightly more
  2059.     efficient by stopping when char under search-start is a close brace
  2060.  
  2061.     * cc-mode.el (cc-label-key):
  2062.     new constant, change all concat'd label regexps to use
  2063.     this new constant
  2064.     
  2065.     (cc-guess-basic-semantics): fix case 13.D to not accidentally code a
  2066.     statement that follows a label as a ?: construct
  2067.  
  2068.     * cc-mode.el (cc-indent-command):
  2069.     fixed behavior when cc-tab-always-indent was nil.
  2070.     should now be like old behavior (CASE 1)
  2071.  
  2072.     * cc-mode.el (cc-emacs-features): improve documentation
  2073.  
  2074.     * cc-mode.el (cc-point):
  2075.     retain quoted symbol semantics on argument but don't use
  2076.     dangerous `eval' to get an eq ready symbol
  2077.  
  2078.     * cc-mode.el (cc-indent-exp):
  2079.     better error messages so people don't get as confused
  2080.  
  2081.     * cc-mode.el (cc-beginning-of-statement):
  2082.     much more robust movement across balanced
  2083.     expressions now correctly finds the beginning of statements for very
  2084.     complex forloops and more.  We now no longer assume that expressions
  2085.     begin and end on a single line.
  2086.     
  2087.     (cc-guess-basic-semantics): CASE 5C is expanded to correctly locate
  2088.     multi-line mathematical paren groupings.  Also, CASE 5E now returns
  2089.     boi at the beginning-of-statement for any arglist-cont.
  2090.  
  2091.     * cc-mode.el:
  2092.     (cc-electric-brace) (cc-electric-slash) (cc-electric-star)
  2093.     (cc-electric-semi&comma) (cc-electric-colon)
  2094.     (cc-change-semantic-symbol-offset): changed docstrings to more
  2095.     accurately describe defuns' behavior
  2096.  
  2097.     * cc-mode.el (cc-indent-exp):
  2098.     calculate bod before doing the forward-sexp since
  2099.     unindented open parens in col0 lower down will mess this calculation
  2100.     up.
  2101.  
  2102. Sat Nov 20 21:53:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2103.  
  2104.     * cc-mode.el (cc-submit-bug-report): typo on cc-hanging-colons-alist
  2105.  
  2106.     * cc-mode.el:
  2107.     (cc-keep-region-active) (cc-make-region-active): split this into a
  2108.     macro (the former) and a defun (the latter).  This way we can check
  2109.     for interactivity as expected, but still cut down on the number of bc
  2110.     warnings.
  2111.  
  2112.     * cc-mode.el:
  2113.     (cc-setup-comment-indent-variable) (cc-keep-region-active): make these
  2114.     defuns so that the .elc file won't be editor version specific. The
  2115.     trade off is that the byte compiler will complain
  2116.  
  2117.     * cc-mode.el (cc-lineup-C-comments):
  2118.     limit re-search-forward to eol, not eol-1...
  2119.     why did we do this?
  2120.  
  2121.     * cc-mode.el:
  2122.     (cc-electric-brace) (cc-electric-semi&comma) (cc-electric-colon):
  2123.     re-indent the line even if cc-auto-newline is nil, just don't add any
  2124.     newlines
  2125.  
  2126.     * cc-mode.el (cc-offsets-alist):
  2127.     multi-line strings should be shoved against the
  2128.     left side margin
  2129.  
  2130.     * cc-mode.el (cc-setup-comment-indent-variable):
  2131.     new macro to cut down on byte
  2132.     compiler warnings
  2133.  
  2134.     * cc-mode.el (cc-case-statement-key):
  2135.     should now recognize character constants as
  2136.     arguments to case statement
  2137.  
  2138.     * cc-mode.el (cc-keep-region-active):
  2139.     support for FSFmacs and don't lay down calls
  2140.     to variables that don't exist
  2141.     
  2142.     (cc-submit-bug-report): variable typos
  2143.  
  2144.     * cc-mode.el:
  2145.     fixed order of macro expansions.  defmacro's must appear before their
  2146.     first use -- this is probably why cc-point was busted in compiled code
  2147.  
  2148. Fri Nov 19 18:44:54 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2149.  
  2150.     * cc-mode.el (cc-guess-basic-semantics):
  2151.     added some minimal recognition of template
  2152.     continuation lines.  Probably not so great.
  2153.     
  2154.     (cc-guess-basic-semantics): fixed top-level decl continutation lines
  2155.     
  2156.     (cc-guess-basic-semantics): fixed ?: constructs
  2157.  
  2158.     * cc-mode.el:
  2159.     (cc-c++-mode) (cc-c-mode): setq'ing of comment-start/-end must happen
  2160.     *after* cc-common-init for those values to retain their proper settings
  2161.     
  2162.     (cc-indent-exp): add optional SHUTUP-P argument to suppress
  2163.     operational messages.
  2164.     
  2165.     (c++-indent-exp): removed this commented out function. I think the
  2166.     byte-compiled, simplified cc-indent-exp is fast enough!
  2167.     
  2168.     (cc-indent-region): stolen from c-mode and fixed.
  2169.     
  2170.     (cc-beginning-of-inheritance): backscanning must stop when we're
  2171.     looking at a cc-class-key
  2172.     
  2173.     (cc-guess-basic-semantics): inher-intro and inher-cont should not have
  2174.     inclass langelem added since their relpos offsets already contain any
  2175.     inclass offset
  2176.  
  2177. Thu Nov 18 23:06:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2178.  
  2179.     * cc-mode.el (cc-change-semantic-symbol-offset): new command
  2180.  
  2181.     * cc-mode.el (cc-guess-basic-semantics):
  2182.     added recognition of 'block-open braces
  2183.     following a full statement (yup they are legal)
  2184.  
  2185.     * cc-mode.el (cc-lineup-C-comments): added to support old
  2186.     cc-C-block-comments-indent-p behavior
  2187.  
  2188.     * cc-mode.el:
  2189.     removed the multi-line preprocessor stuff.  its just too much of a
  2190.     hack right now
  2191.  
  2192.     * cc-mode.el: some limited support for multi-line macros and such
  2193.  
  2194. Wed Nov 17 23:29:41 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2195.  
  2196.     * cc-mode.el:
  2197.     fixed all byte-compiler warnings. did a pass through the comments and
  2198.     docstrings. macro-ized a few more defuns
  2199.  
  2200.     * cc-mode.el (cc-indent-exp):
  2201.     a slow, but moderately useful interrim solution.
  2202.  
  2203.     * cc-mode.el (cc-point):
  2204.     another small fix to the macro to get byte compilation to work
  2205.  
  2206.     * cc-mode.el (cc-point):
  2207.     small fix to macro expansion. must eval position so that
  2208.     'sym idiom still works
  2209.  
  2210.     * cc-mode.el:
  2211.     added cc-keep-region-active to all appropriate interactive defuns
  2212.  
  2213.     * cc-mode.el (cc-point):
  2214.     made this a macro so things should be much quicker when
  2215.     byte compiled
  2216.  
  2217.     * cc-mode.el (cc-electric-brace):
  2218.     insert any after-brace newlines after all
  2219.     cleanups have taken place
  2220.  
  2221.     * cc-mode.el (cc-electric-colon):
  2222.     semantic information can only be accurately
  2223.     retrieved on the line with colon for label, case-label, and
  2224.     access-key.  member-init-intro and inher-intro must be gathered from
  2225.     the following line.
  2226.  
  2227.     * cc-mode.el: (cc-electric-start) (cc-electric-slash): use
  2228.     cc-indent-via-language-element instead of cc-indent-line
  2229.  
  2230. Tue Nov 16 23:04:59 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2231.  
  2232.     * cc-mode.el (c++-electric-colon): deleted
  2233.  
  2234.     * cc-mode.el (cc-electric-brace):
  2235.     inhibit blinking any close paren until we've done
  2236.     all our magic, then just call blink-paren-function manually
  2237.  
  2238.     * cc-mode.el (cc-guess-basic-semantics): CASE 4 was missing a call to
  2239.     cc-backward-syntactic-ws which broke arglist indentations
  2240.  
  2241.     * cc-mode.el (cc-beginning-of-statement):
  2242.     catch multi-line function calls by going
  2243.     backward over balanced () sexps
  2244.  
  2245.     * cc-mode.el: had to add all the lineup functions from c++-syntax.el
  2246.  
  2247.     * cc-mode.el: continued if/while/do/else/for statements now work again
  2248.  
  2249.     * cc-mode.el: 1. a good shot at cc-electric-colon
  2250.     2. added cc-scope-operator bound onto C-c C-;
  2251.  
  2252.     * cc-mode.el:
  2253.     everything is rewritten and tested except c++-electric-colon and
  2254.     c++-indent-exp
  2255.  
  2256. Thu Nov 11 21:24:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2257.  
  2258.     * cc-mode.el: got rid of glaring byte-compiler reported problems.
  2259.  
  2260.     * cc-mode.el:
  2261.     The bulk of the rename work has been done.  The entire mode has been
  2262.     renamed CC-Mode.  The file has been renamed cc-mode.el, and all
  2263.     symbols have changed from c++-<thing> to cc-<thing>.  In addition, all
  2264.     known remaining c-mode dependencies have been eliminated.
  2265.     
  2266.     There is still much work to be done.
  2267.  
  2268. Tue Nov  9 22:26:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2269.  
  2270.     * cc-mode.el: rough attempt at syntactic analysis. more to come
  2271.  
  2272. Mon Nov  1 03:25:12 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2273.  
  2274.     * cc-mode.el (c++-search-uplist-for-classkey):
  2275.     restore point if no enclosing class
  2276.     is found
  2277.  
  2278. Sun Oct 31 19:14:59 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2279.  
  2280.     * cc-mode.el:
  2281.     (c++-narrow-out-enclosing-class) (c++-search-uplist-for-classkey): new
  2282.     defuns
  2283.     
  2284.     (c++-point): added 'boe and 'eoe positions
  2285.  
  2286. Fri Oct 29 22:42:35 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2287.  
  2288.     * cc-mode.el:
  2289.     totally screwed up indentation.  we're going to have to back out the
  2290.     last few mods.  URG!
  2291.  
  2292.     * cc-mode.el (c++-indent-exp):
  2293.     special case of looking at ?{, should not add
  2294.     c-indent-level since this is only for C statements wrt containing
  2295.     block and not block opening paren
  2296.  
  2297.     * cc-mode.el (c++-calculate-indent):
  2298.     undid split from previous revision. now case
  2299.     3A always returns 0.  Any additional top-level brace offset gets
  2300.     applied in c++-indent-line and c++-indent-exp (although the later does
  2301.     not yet work).
  2302.  
  2303.     * cc-mode.el (c++-calculate-indent):
  2304.     needed to split case 3A into 2 parts since
  2305.     bobp does not get the same indent as a top-level opening paren
  2306.  
  2307. Wed Oct 27 14:28:16 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2308.  
  2309.     * cc-mode.el (c++-common-init):
  2310.     don't set the auto-hungry state here since the
  2311.     mode hook has not been run yet.
  2312.     
  2313.     (c++-mode) (c++-c-mode): set the auto-hungry state for the buffer
  2314.     after the mode hook has been run
  2315.  
  2316. Wed Oct 20 18:46:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2317.  
  2318.     * cc-mode.el (c++-mode-map):
  2319.     do NOT define C-m and C-j, so as to retain the
  2320.     standard default settings for these keybindings
  2321.  
  2322. Mon Oct 11 16:32:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2323.  
  2324.     * cc-mode.el (c++-calculate-indent):
  2325.     in CASE 3C, when checking for hanging member
  2326.     init colon, but not scope operator, we didin't check for double colons
  2327.     when looking at the preceding-char.  Now look at char before point and
  2328.     char 2 before point.  If both are colons, we're looking at a scope
  2329.     operator.
  2330.  
  2331. Fri Oct  1 13:21:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2332.  
  2333.     * cc-mode.el (c++-common-init):
  2334.     changed the test for comment-indent-function to
  2335.     checking for boundp of the variable instead of c++-emacs-features
  2336.     since Emacs 18 with syntax patches is (8bit v19) but does not have the
  2337.     variable bound.
  2338.  
  2339. Wed Sep 29 21:08:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2340.  
  2341.     * cc-mode.el (c++-backward-to-start-of-if):
  2342.     better error message for else with no if
  2343.  
  2344.     * cc-mode.el (c++-calculate-indent):
  2345.     test case 3H, when taking the current-column,
  2346.     must subtract out the inclass-shift so it doesn't get added twice.
  2347.     inclass-shift is implicit in current-column.
  2348.  
  2349. Tue Sep 28 23:11:04 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2350.  
  2351.     * cc-mode.el (c++-mode-syntax-table): don't be as harsh on FSF
  2352.  
  2353.     * cc-mode.el: (c++-cleanup-list) (c++-hanging-member-init-colon)
  2354.     (c++-auto-hungry-initial-state) (c++-auto-hungry-toggle) (c++-mode):
  2355.     use the terminology "valid" instead of "legal" to define acceptable
  2356.     values as per RMS's conventions.
  2357.  
  2358.     * cc-mode.el (c++-c-mode): improve the docstring re: running the hook
  2359.  
  2360.     * cc-mode.el (c++-indent-exp):
  2361.     use c++-cont-indent to calculate continued statement
  2362.     indentation amount.  remove large part of hackery here so lets watch
  2363.     and see if anything got broken, but I think c++-c-i should do the
  2364.     trick for all constructs
  2365.  
  2366.     * cc-mode.el (c++-indent-defun):
  2367.     better, quicker implementation of this defun
  2368.  
  2369.     * cc-mode.el (c++-electric-pound):
  2370.     better implementation of previous patch
  2371.  
  2372.     * cc-mode.el (c++-electric-pound):
  2373.     only align pound to left column if there isn't
  2374.     one already there.  This lets people enter ## as cpp concat command
  2375.  
  2376.     * cc-mode.el (c++-electric-semi):
  2377.     renamed c++-electric-semi&comma to implement },
  2378.     and }; cleanups
  2379.     
  2380.     (c++-cleanup-list): added list-close-comma to allow cleanups of },
  2381.     constructs.
  2382.  
  2383.     * cc-mode.el: cleaned up some comments
  2384.  
  2385.     * cc-mode.el (c++-common-init):
  2386.     new function to provide one entry point for all
  2387.     common initializations of the mode.
  2388.     
  2389.     (c++-mode) (c++-c-mode): use c++-common-init to do the common stuff,
  2390.     then do mode specific stuff.
  2391.  
  2392.     * cc-mode.el (c++-calculate-indent):
  2393.     complete fix for proper indentation of base
  2394.     classes in a multiple inheritance declaration.
  2395.     
  2396.     (c++-baseclass-key): new constant defining regexp for base class defs
  2397.  
  2398.     * cc-mode.el: partial fix for multi-inher lines
  2399.  
  2400. Mon Sep 27 19:15:51 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2401.  
  2402.     * cc-mode.el (c++-backward-to-start-of-if):
  2403.     give a more informative message if an
  2404.     unbalanced if/else was found
  2405.  
  2406.     * cc-mode.el (c++-compound-offset):
  2407.     fixed a bug when looking at "typedef enum",
  2408.     this wasn't registering as an enum start.
  2409.     
  2410.     (c++-indent-exp): fixed indentation of comma separated compound
  2411.     statements by using the function c++-compound-offset to calculate
  2412.     offset instead of just using the variable c-continued-statement-offset
  2413.  
  2414.     * cc-mode.el (c++-mode):
  2415.     compatibility with old style comment-indent-hook and new
  2416.     style comment-indent-function
  2417.  
  2418.     * cc-mode.el:
  2419.     (c++-indent-line) (c++-calculate-indent): improved calculate in
  2420.     let-body for open-paren and top-open-paren values, using car-safe and
  2421.     cdr-safe
  2422.     
  2423.     (c++-indent-line): fix typo bug when looking at open brace.
  2424.     
  2425.     (c++-indent-line): apply TOPLEVEL c-brace-offset when brace is at top
  2426.     level wrt class, or real top level.
  2427.  
  2428.     * cc-mode.el (c-brace-offset): moved here from c-mode.el
  2429.     
  2430.     (c++-mode): for vars c-brace-offset and c++-block-close-brace-offset,
  2431.     both can now take list values.  describe these in the mode's
  2432.     docstring.
  2433.     
  2434.     (c++-indent-exp) (c++-indent-line) (c++-calculate-indent): when
  2435.     looking at an open brace, apply c-brace-offset depending on
  2436.     top-level-ness of the opening brace.
  2437.  
  2438. Fri Sep 24 22:05:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2439.  
  2440.     * cc-mode.el (c++-indent-exp):
  2441.     when inside a class definition, if we are looking at
  2442.     an open brace, we apply c-continued-brace-offset instead of just zero.
  2443.     this allows users to indent the opening brace of an inline function
  2444.     body.
  2445.  
  2446.     * cc-mode.el (c++-calculate-indent):
  2447.     when inside a class definition, if we are
  2448.     looking at an open brace, we apply c-continued-brace-offset instead of
  2449.     just zero.  this allows users to indent the opening brace of an inline
  2450.     function body.
  2451.  
  2452.     * cc-mode.el (c++-calculate-indent):
  2453.     removed the commented out text which used to
  2454.     test for null state.  we never hit null state from c++-parse-state
  2455.     anymore.
  2456.  
  2457.     * cc-mode.el (c++-emacs19-accurate-bsws):
  2458.     new function which skips syntactic
  2459.     whitespace w/o treating cpp macros as comments syntactically.
  2460.     
  2461.     (c++-emacs18-bsws): renamed from c++-backwards-syntactic-ws
  2462.     
  2463.     (c++-lemacs-pre19-8-bsws): renamed from c++-backwards-syntactic-ws-1
  2464.     
  2465.     (c++-emacs18-il): renamed from c++-in-literal
  2466.     
  2467.     (c++-8bit-il): renamed from c++-in-literal-8-bit
  2468.     
  2469.     (c++-1bit-il): renamed from c++-in-literal-1-bit
  2470.     
  2471.     Changed the way compatibility is fset into the function symbols
  2472.     c++-backward-syntactic-ws and c++-in-literal.
  2473.  
  2474. Tue Aug 10 16:44:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2475.  
  2476.     * cc-mode.el: minor cosmetic comment typo
  2477.  
  2478. Thu Jul 29 00:18:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2479.  
  2480.     * cc-mode.el: consensus was to nuke c++-insert-header
  2481.  
  2482. Mon Jul 12 20:37:27 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2483.  
  2484.     * cc-mode.el (c++-mode.el): updated the comments at the top of the file
  2485.  
  2486.     * cc-mode.el (c++-calculate-indent):
  2487.     removed test for null state during initial
  2488.     parse from beginning-of-defun to indent-point.  this is obsolete now.
  2489.  
  2490. Fri Jul  2 22:42:03 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2491.  
  2492.     * cc-mode.el (c++-mode-map): removed bindings to obsolete functions
  2493.     c++-beginning-of-defun and c++-end-of-defun.
  2494.     
  2495.     (c++-electric-terminator) (c++-in-literal) (c++-in-literal-8-bit)
  2496.     (c++-in-literal-1-bit) (c++-point) (c++-indent-defun): changed all
  2497.     references of obsolete functions c++-beginning-of-defun and
  2498.     c++-end-of-defun to beginning-of-defun and end-of-defun respectively.
  2499.  
  2500.     * cc-mode.el:
  2501.     (c++-match-header-strongly) (c++-defun-header-strong-struct-equivs)
  2502.     (c++-defun-header-strong) (c++-defun-header-weak)
  2503.     (c++-beginning-of-defun) (c++-end-of-defun): removed as obsolete.
  2504.     there are better and cheaper ways of accomplishing the same
  2505.     functionality.
  2506.  
  2507.     * cc-mode.el (c++-electric-brace):
  2508.     I missed a few calls to c++-indent-line.  Added
  2509.     bod argument to remaining few.
  2510.  
  2511.     * cc-mode.el (c++-calculate-indent):
  2512.     removed logic dealing with (null state) and
  2513.     placed an error call there in anticipation of removal of header strong
  2514.     matching stuff.  I want to be sure there's no way to get to this code
  2515.     
  2516.     (c++-electric-brace): added bod argument to calls to c++-indent-line
  2517.     so the correct bod is found, not the newly created one with the just
  2518.     inserted open brace.
  2519.  
  2520.     * cc-mode.el:
  2521.     (c++-indent-command) (c++-tab-always-indent) (c++-hanging-braces)
  2522.     (c++-mode): changed the not-nil-or-t language to read "other than nil
  2523.     or t"
  2524.  
  2525. Thu Jul  1 17:40:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2526.  
  2527.     * cc-mode.el (c++-backward-to-start-of-if):
  2528.     changed c++-backward-sexp call to
  2529.     backward-sexp now that parse-sexp-ignore-comments is handled correctly.
  2530.  
  2531. Wed Jun 30 17:03:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2532.  
  2533.     * cc-mode.el:
  2534.     (c++-forward-sexp) (c++-backward-sexp): removed because these are obsoleted by the correct implementation for setting parse-sexp-ignore-comments. (c++-mode): improved idiom for setting up local vars
  2535.  
  2536. Mon Jun 28 15:47:13 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2537.  
  2538.     * cc-mode.el:
  2539.     (c++-cleanup-list) (c++-mode) (c++-fast-backward-syntactic-ws-1)
  2540.     (c++-calculate-indent) (c++-in-literal) (c++-in-literal-8-bit)
  2541.     (c++-in-literal-1-bit) (c++-at-top-level-p)
  2542.     (c++-backward-to-start-of-do) (c++-backward-to-start-of-if)
  2543.     (c++-uncomment-region): install RMS's suggested doc string fixes based
  2544.     on last public release.
  2545.  
  2546. Wed Jun 23 13:58:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2547.  
  2548.     * cc-mode.el:
  2549.     hacking on syntax entry must be mode specific in -ws functions.  ie in
  2550.     c++-c-mode, hack c++-c-mode-syntax-table and for c++-mode hack only
  2551.     c++-mode-syntax-table.
  2552.  
  2553. Mon Jun 21 21:40:15 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2554.  
  2555.     * cc-mode.el:
  2556.     should not skip-chars-backward in ws-2, let forward-comment handle that
  2557.  
  2558. Fri Jun 18 21:31:24 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2559.  
  2560.     * cc-mode.el:
  2561.     another refinement to addition offset given to open brace lines in
  2562.     c++-indent-exp.  Check for not at top level wrt class before adding
  2563.     c-indent-level.
  2564.  
  2565.     * cc-mode.el: another fix to c++-indent-exp for member init lists
  2566.  
  2567.     * cc-mode.el:
  2568.     fixed c++-indent-exp when comments follow a continued statement
  2569.  
  2570.     * cc-mode.el: a fix to c++-indent-exp where c-brace-offset is < 0
  2571.  
  2572.     * cc-mode.el:
  2573.     fixed some comment spelling errors which were fixed (but *not*
  2574.     reported!) by FSF
  2575.  
  2576.     * cc-mode.el:
  2577.     fixed a problem where default_answer("boof: glorp"); was being
  2578.     incorrectly matched to a default: statement
  2579.  
  2580. Thu Jun 17 21:52:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2581.  
  2582.     * cc-mode.el:
  2583.     update language to accurately reflect state of Lemacsen and FSFmacsen
  2584.  
  2585. Wed Jun 16 22:27:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2586.  
  2587.     * cc-mode.el:
  2588.     fixed indentation when base class declaration is on a separate line
  2589.     then the derived class intro header.
  2590.  
  2591.     * cc-mode.el:
  2592.     1. cleaned up the way closing block braces are adjusted in
  2593.        c++-indent-line.
  2594.     
  2595.     2. also extended c++-block-close-brace-offset to allow list value so
  2596.        the following style can be easily supported:
  2597.     
  2598.     foo(a)
  2599.     {
  2600.         if(a)
  2601.             {
  2602.             asasdfsdf;
  2603.             }
  2604.     }
  2605.     
  2606.       Previously, there was no way to adjust the closing brace into column
  2607.       zero.
  2608.  
  2609. Tue Jun 15 22:04:43 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2610.  
  2611.     * cc-mode.el:
  2612.     use c-continued-statement-offset instead of c-indent-level to indent
  2613.     comma separated arg decl lists
  2614.  
  2615.     * cc-mode.el: bind C-m to newline-and-indent
  2616.  
  2617.     * cc-mode.el:
  2618.     much simplification on c++-fast-backward-syntactic-ws-2 to work with
  2619.     new forward-comment semantics
  2620.  
  2621.     * cc-mode.el:
  2622.     don't skip up past compound statement if we're in a member init list
  2623.  
  2624.     * cc-mode.el: fixed a bug in the translation of CASE 3 to cond stmt
  2625.  
  2626.     * cc-mode.el:
  2627.     1. cleaned up the spaghetti if's in CASE3 of c++-calculate-indent, by
  2628.        converting all if's to a single cond statement -- I *hope* I got it
  2629.        right!
  2630.     
  2631.     2. Added indentation, via c-indent-level of multi-line,
  2632.        comma-separated, compound statements/declarations, with correction
  2633.        for enum and static array inits.
  2634.     y
  2635.  
  2636. Mon Jun 14 21:54:38 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2637.  
  2638.     * cc-mode.el:
  2639.     merged in submitted patch to fix a possible bug which rears its ugly
  2640.     head in FSFmacs19.  I haven't verified it so the fix only happens in FSFmacs
  2641.  
  2642. Thu Jun  3 22:42:44 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2643.  
  2644.     * cc-mode.el: try to conform to GNU cosmetic style
  2645.  
  2646. Tue Jun  1 14:58:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2647.  
  2648.     * cc-mode.el:
  2649.     better to make a copy of the syntax table so we don't screw up text
  2650.     mode's syntax table!
  2651.  
  2652. Fri May 28 22:20:57 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2653.  
  2654.     * cc-mode.el:
  2655.     fixed the bug in c++-electric-brace where entering an open brace while
  2656.     point is at bol and c++-auto-newline is nil did not indent the brace.
  2657.  
  2658. Tue May 25 18:37:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2659.  
  2660.     * cc-mode.el: some cosmetic differences to c++-emacs-features
  2661.  
  2662. Mon May 24 23:23:05 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2663.  
  2664.     * cc-mode.el: take out bogus defun c++-emacs-features
  2665.  
  2666.     * cc-mode.el:
  2667.     be really really smart about figuring out c++-emacs-features
  2668.  
  2669.     * cc-mode.el:
  2670.     we must use a different c++-in-literal for GNU19's 1-bit solution
  2671.  
  2672. Wed May 19 14:19:20 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2673.  
  2674.     * cc-mode.el: better c++-emacs-features deciphering
  2675.  
  2676. Tue May 18 15:13:39 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2677.  
  2678.     * cc-mode.el: no c++-mode-maintainer
  2679.  
  2680. Fri May 14 22:05:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2681.  
  2682.     * cc-mode.el:
  2683.     can't yet make c++-indent-exp work in weird situation (see bug reports)
  2684.  
  2685.     * cc-mode.el:
  2686.     make sure we check for default: in the same place we check for case:
  2687.     labels in CASE 4 of c++-calculate-indent
  2688.  
  2689. Tue May 11 21:41:13 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2690.  
  2691.     * cc-mode.el: a little better documentation
  2692.  
  2693.     * cc-mode.el:
  2694.     fixed the compat cond when setting c++-backward-syntactic-ws
  2695.  
  2696.     * cc-mode.el: fixed the string-match call in c++-emacs-features
  2697.  
  2698. Mon May 10 18:20:42 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2699.  
  2700.     * cc-mode.el: check for forward-comment first
  2701.  
  2702.     * cc-mode.el: fixed syntax errors in previous mod
  2703.  
  2704.     * cc-mode.el: attempt to port between all known flavors of emacsen
  2705.  
  2706. Thu Apr 22 21:16:15 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2707.  
  2708.     * cc-mode.el:
  2709.     ask user if they want to submit a bug report before actually doing it
  2710.  
  2711.     * cc-mode.el:
  2712.     quick fix for when the ? part of a ?: construct is a negative number
  2713.  
  2714. Wed Apr 21 19:53:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2715.  
  2716.     * cc-mode.el: use new interface to reporter.el
  2717.  
  2718. Mon Apr 19 20:41:48 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2719.  
  2720.     * cc-mode.el: uuencode when sending to ftpmail
  2721.  
  2722.     * cc-mode.el: c++-mailer is obsolete now
  2723.  
  2724.     * cc-mode.el:
  2725.     modify c++-submit-bug-report to use reporter package, and require it.
  2726.  
  2727.     * cc-mode.el: updated some documentation about getting c++-mode
  2728.  
  2729. Fri Apr 16 15:36:39 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2730.  
  2731.     * cc-mode.el:
  2732.     in c++-indent-exp, during the logic which evaluates special
  2733.     adjustments in the line's indentation, the sequential ifs should be a
  2734.     cond statement since the conditions should be mutually exclusive
  2735.  
  2736.     * cc-mode.el: updated mail-server (getting the mode) comments
  2737.  
  2738. Fri Apr  2 15:35:10 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2739.  
  2740.     * cc-mode.el:
  2741.     c++-backward-to-start-of-if wasn't taking into account "if" clauses in
  2742.     intervening comments.  Needed to add a c++-backward-syntactic-ws
  2743.  
  2744. Thu Apr  1 23:08:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2745.  
  2746.     * cc-mode.el:
  2747.     cleaned up (I hope) all docstrings related to auto-hungry features
  2748.  
  2749.     * cc-mode.el:
  2750.     modified c++-class-key to recognize typedef in addition to extern
  2751.  
  2752.     * cc-mode.el:
  2753.     fixed c++-electric-star handling of stars inside C block comments but
  2754.     not part of comment line head (i.e. stars embedded inside C block
  2755.     comment lines not at 'boi, don't re-indent line)
  2756.  
  2757. Thu Mar 18 18:49:42 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2758.  
  2759.     * cc-mode.el:
  2760.     fix infinite loop in c++-fast... in the following situation
  2761.     \n
  2762.     #define x \
  2763.     -----------^
  2764.     hit return here
  2765.  
  2766.     * cc-mode.el:
  2767.     wrap temporary binding of # to comment syntax in c++-fast-... in an
  2768.     unwind-protect to ensure that it gets reset on any exit
  2769.  
  2770. Thu Mar 11 15:36:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2771.  
  2772.     * cc-mode.el:
  2773.     fixed indentation of block comments after first /* line in c++-indent-exp
  2774.  
  2775. Wed Mar 10 18:50:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2776.  
  2777.     * cc-mode.el: c++-in-literal-quick wasn't checking for inside a string
  2778.  
  2779. Fri Mar  5 20:00:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2780.  
  2781.     * cc-mode.el: fixed regexps for case labels... I hope
  2782.  
  2783. Thu Mar  4 23:00:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2784.  
  2785.     * cc-mode.el: updated copyright date
  2786.  
  2787.     * cc-mode.el: c++-c-mode uses c-mode-abbrev-table
  2788.  
  2789.     * cc-mode.el:
  2790.     in c++-fast-backward-syntactic-ws, check for lim<point *after* lim has
  2791.     be let bound
  2792.  
  2793. Wed Mar  3 20:25:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2794.  
  2795.     * cc-mode.el: forgot to add basic inclass-shift
  2796.  
  2797. Tue Mar  2 20:11:48 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2798.  
  2799.     * cc-mode.el: handle underscores in c++-inher-key
  2800.  
  2801.     * cc-mode.el:
  2802.     inclass-shift is now calculated by multiplying inclass-depth with the
  2803.     sum of c-indent-level and c-brace-imaginary-offset.  Usually at least
  2804.     one of these c vars is zero.  Also, precompute inclass-unshift
  2805.  
  2806.     * cc-mode.el: 1. fixed bogus end-of-buffer error when lim>=(point)
  2807.     2. extended c++-class-key to include optional "extern" keyword
  2808.  
  2809.     * cc-mode.el: 1. extended c++-class-key to handle template definitions
  2810.     2. made MI-regexp in c++-calculate-indent into the global constant
  2811.        c++-inher-key so it doesn't need to be concat'd every entry into
  2812.        the loop.
  2813.  
  2814.     * cc-mode.el: fixed small infinite loop introduced in previous patch
  2815.  
  2816.     * cc-mode.el:
  2817.     fixed c++-indent-exp when a multi-line C block comment caused
  2818.     calculation of state to be wrong.  Now, when calculating line-end, we
  2819.     first check to see of eol is in a C comment, and if so, we scan
  2820.     forward until we find the end of the block comment.
  2821.     
  2822.     this algorithm might break if there is code on the same line, but
  2823.     after the closing */ of a comment. this is to bizarre to support
  2824.  
  2825.     * cc-mode.el:
  2826.     no longer rely on # being of syntax class comment for really patched
  2827.     emacses, except for convenience when in
  2828.     c++-fast-backward-syntactic-ws.  Also, in this method, go into a loop
  2829.     checking for cpp directives since its possible that a directive has a
  2830.     comment on the end of the line:
  2831.     
  2832.     #include <foo.h>      /* opening a block comment here
  2833.                            * which isn't closed until here
  2834.                            */
  2835.     
  2836.     Finally, fix c++-in-literal-quick to handle new syntax class of #
  2837.  
  2838. Mon Mar  1 23:32:40 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2839.  
  2840.     * cc-mode.el:
  2841.     no longer rely on # being of syntax class for really patched emacses
  2842.  
  2843.     * cc-mode.el:
  2844.     c++-macroize-region will now take any prefix arg instead of just a
  2845.     negative arg.
  2846.  
  2847. Tue Feb 16 20:30:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2848.  
  2849.     * cc-mode.el: don't use _ as word constituent, instead fix regexps
  2850.  
  2851.     * cc-mode.el:
  2852.     give _ word constituent syntax class so indentation of case_ and like
  2853.     symbols will work properly.  forward-word will gobble underscores in
  2854.     symbols so that's the trade off for taking the easy way out.
  2855.  
  2856. Fri Feb 12 16:40:35 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2857.  
  2858.     * cc-mode.el:
  2859.     c++-backward-to-start-of-if was necessitated because backward-sexp
  2860.     call was bombing out in new syntax, on single quote in preceding C++
  2861.     comment line.  use c++-backward-sexp to properly handle this and
  2862.     change all references of c-backward... to c++-backward.
  2863.  
  2864. Thu Feb 11 18:33:50 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2865.  
  2866.     * cc-mode.el:
  2867.     should only bind parse-sexp-ignore-comments to t if c++-is-really-fixed-p
  2868.  
  2869. Sat Feb  6 00:04:45 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2870.  
  2871.     * cc-mode.el:
  2872.     in c++-comment-indent, if previous line contains a comment only line
  2873.     that is to the left of comment-column, indent the line to
  2874.     comment-column
  2875.  
  2876. Fri Feb  5 23:41:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2877.  
  2878.     * cc-mode.el: fixed K&R C arg decl with keyword struct in line
  2879.  
  2880.     * cc-mode.el:
  2881.     fixed c++-indent-command to follow documentation. previous the
  2882.     following situation was broken: c++-tab-always-indent == nil and:
  2883.     
  2884.     ...
  2885.     {
  2886.     foo;
  2887.     ^------- point was here
  2888.  
  2889.     * cc-mode.el:
  2890.     use Ken Laprade's patch for format vs symbol-name print of
  2891.     c++-special-indent-hook
  2892.  
  2893.     * cc-mode.el:
  2894.     check for (not (c++-in-parens-p)) when deciding whether we're looking
  2895.     at a continuation line or not to avoid bad indentation of continued
  2896.     lines such as:
  2897.     
  2898.         if( !tnode->expanded_p() &&
  2899.             docobj->hasChild_p() &&
  2900.             docobj->tocLevel() < xmaxTocDepth )
  2901.  
  2902.     * cc-mode.el: fixed anchor of comment only lines in c++-indent-exp
  2903.  
  2904.     * cc-mode.el:
  2905.     anchor comment only lines to (current-column) if the comment is at, or
  2906.     to the right of, comment-column.
  2907.  
  2908.     * cc-mode.el:
  2909.     c++-continued-member-init-offset works for line with just single colon
  2910.     line, where member inits follow on subsequent lines:
  2911.     
  2912.     ff::ff ()
  2913.        :
  2914.        xxx (0),
  2915.        yyy (0)
  2916.     {
  2917.  
  2918.     * cc-mode.el:
  2919.     don't add c-continued-statement-offset if looking at a class's opening
  2920.     brace
  2921.  
  2922.     * cc-mode.el: fixed c++-indent-exp wrt stream ops
  2923.  
  2924.     * cc-mode.el: fixed another small problem with nested class indentation
  2925.  
  2926.     * cc-mode.el:
  2927.     another fix for nested class indentation when looking at the line
  2928.     after an access specifier.  we needed to substract one level of
  2929.     indentation
  2930.  
  2931. Tue Feb  2 21:27:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2932.  
  2933.     * cc-mode.el: modifications to better indent nested classes
  2934.  
  2935. Fri Jan 29 22:31:07 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2936.  
  2937.     * cc-mode.el:
  2938.     in c++-forward/backward-sexp, only let bind parse-sexp-ignore-comments
  2939.     to t if emacs is fixed (not really fixed)
  2940.  
  2941. Wed Jan 27 22:48:56 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2942.  
  2943.     * cc-mode.el:
  2944.     some previous fix (don't know when) broke MI continuation line
  2945.     indentation.  This fixes that problem by making sure we're not looking
  2946.     at MI-regexp
  2947.  
  2948.     * cc-mode.el: commented out bogus part
  2949.  
  2950.     * cc-mode.el: commented out bogus top level continuation indentations
  2951.  
  2952. Mon Jan 25 23:34:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2953.  
  2954.     * cc-mode.el:
  2955.     fixed minor bug with c++-submit-bug-report which manifests
  2956.     only on unpatched emacses
  2957.  
  2958.     * cc-mode.el: fixed small bug in c++-submit-bug-report manifesting
  2959.     in unpatched emacses
  2960.  
  2961. Thu Jan 21 23:38:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2962.  
  2963.     * cc-mode.el:
  2964.     c++-indent-exp must let-bind parse-sexp-ignore-comments to t for the
  2965.     whole duration
  2966.  
  2967.     * cc-mode.el:
  2968.     hack for c++-indent-sexp continued statement offsets... are there
  2969.     repercussions???
  2970.  
  2971.     * cc-mode.el: fixed c++-cont-indent free variable
  2972.  
  2973.     * cc-mode.el: partial fix of continuation lines at top level
  2974.  
  2975. Wed Jan 20 23:39:40 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2976.  
  2977.     * cc-mode.el: 1. remove infinite loop from c++-in-literal
  2978.     2. get rid of messages
  2979.     
  2980.     note that c++-in-literal-quick is broken wrt to old emacs patches
  2981.  
  2982. Wed Jan 13 22:57:51 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2983.  
  2984.     * cc-mode.el:
  2985.     c++-end-of-defun needed to let-bind parse-sexp-ignore-comments to t
  2986.  
  2987.     * cc-mode.el: better c++-in-literal-quick
  2988.  
  2989.     * cc-mode.el: 1. cosmetic cleanups of code
  2990.     2. a pass through c++-mode docstring and all variables
  2991.  
  2992.     * cc-mode.el: another hack on the comments at the top of the file
  2993.  
  2994.     * cc-mode.el: a documentation pass
  2995.  
  2996.     * cc-mode.el: changed name of c++-backward-over-syntactic-ws to just
  2997.     c++-backward-syntactic-ws to more closely resemble new lemacs builtin
  2998.     function name.
  2999.  
  3000.     * cc-mode.el: fixed c++-syntax-mode-table to work with patched lemacs
  3001.  
  3002. Sat Jan  9 05:08:25 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  3003.  
  3004.     * cc-mode.el: put # back as a comment-style
  3005.  
  3006.     * cc-mode.el: comment about new bc and backward-syntactic-ws
  3007.  
  3008.     * cc-mode.el: better syntax specifications for new patched lemacs
  3009.  
  3010. Thu Jan  7 22:22:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  3011.  
  3012.     * cc-mode.el:
  3013.     added c++-backward-sexp and c++-forward-sexp which are bound to M-C-f
  3014.     and M-C-b and work better than their non-c++-mode counterparts since
  3015.     they let-bind parse-sexp-ignore-comments to t.
  3016.  
  3017. Thu Dec 31 22:17:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3018.  
  3019.     * cc-mode.el:
  3020.     use the really, really, up-to-date syntax patch for Lemacs 19
  3021.  
  3022. Tue Dec 29 01:22:19 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3023.  
  3024.     * cc-mode.el: removed extraneous commented out code
  3025.  
  3026.     * cc-mode.el: need to ensure that c-mode is loaded in
  3027.  
  3028.     * cc-mode.el:
  3029.     fixed a problem inside member init lists, where the first member (on
  3030.     the colon line) has its args continued
  3031.  
  3032.     * cc-mode.el:
  3033.     fix bug when indenting a line at level zero which begins at the
  3034.     beginning of buffer
  3035.  
  3036. Wed Dec 23 23:20:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3037.  
  3038.     * cc-mode.el:
  3039.     fix for c++-indent-exp so that it properly indents c block comments
  3040.  
  3041. Fri Dec 18 16:15:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3042.  
  3043.     * cc-mode.el: greater improvements on c++-b-o-w-s performance
  3044.  
  3045. Thu Dec 17 23:29:18 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3046.  
  3047.     * cc-mode.el:
  3048.     another run at optimizing c++-backward-over-syntactic-ws based on
  3049.     information gleaned from calc.el experience
  3050.  
  3051.     * cc-mode.el:
  3052.     c++-backward-over-syntactic uses beginning-of-defun instead of
  3053.     point-min as minimum distance to scan back
  3054.  
  3055. Wed Dec 16 21:52:41 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3056.  
  3057.     * cc-mode.el:
  3058.     check for brace insertion at not-quite-end-of-line (ie eol, ignoring
  3059.     any trailing ws)
  3060.  
  3061.     * cc-mode.el: allow c++-backscan-limit to be nil
  3062.  
  3063. Fri Dec 11 16:26:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3064.  
  3065.     * cc-mode.el:
  3066.     in electric terminator, don't just check for eolp to determine if
  3067.     terminator should electrify. also look for hanging whitespace which
  3068.     may look like eolp, even though it isn't:
  3069.     
  3070.             fooo();......\n
  3071.                   ^------^
  3072.     undiscovered ws---|
  3073.  
  3074. Thu Dec 10 22:59:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3075.  
  3076.     * cc-mode.el:
  3077.     simple fix in calculate indent so forward-char 1 at end of buffer
  3078.     won't throw an error
  3079.  
  3080. Wed Dec  9 17:55:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3081.  
  3082.     * cc-mode.el:
  3083.     error in default value for c++-untame-characters. needed to negate the
  3084.     check for c++-emacs-is-fixed-p
  3085.  
  3086.     * cc-mode.el:
  3087.     fixed problems in electric-(star|slash) when inserting as first
  3088.     character in a buffer.
  3089.  
  3090.     * cc-mode.el:
  3091.     don't treat double-colon as member init when member defun is split
  3092.     across two lines at the scope operator. eg:
  3093.     
  3094.     HereIsAReallyLongClassName
  3095.     ::HereIsAReallyLongClassName( const WithALongConstructorArgument& )
  3096.         : andItsFirstMemberInit( 7 )
  3097.     {}
  3098.  
  3099.     * cc-mode.el: added some thanks to the documentation
  3100.  
  3101. Tue Dec  8 23:57:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3102.  
  3103.     * cc-mode.el:
  3104.     better c++-submit-bug-report that works with all known mailers
  3105.  
  3106. Mon Dec  7 16:26:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3107.  
  3108.     * cc-mode.el:
  3109.     fixed calculation of multiple member-inits where double colons can
  3110.     appear inside initing parens
  3111.  
  3112.     * cc-mode.el: improved documentation for c++-special-indent-hook
  3113.  
  3114. Sat Dec  5 02:52:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3115.  
  3116.     * cc-mode.el: handled member init lists with first embedded colon
  3117.     
  3118.     foo() : foo, foo,
  3119.         foo, foo,
  3120.         ^--- this should probably be indented to
  3121.           ^--- here (under colon)
  3122.     
  3123.     but that's really hard and of minimal use.
  3124.  
  3125.     * cc-mode.el:
  3126.     finally figured out that "questionable member init" indentation
  3127.     section. It occurs when you have the following style:
  3128.     
  3129.     foo(...) :
  3130.         foo(9), blat(10),
  3131.         clob(3)
  3132.     
  3133.     Note the colon hanging on the previous line. Steve Vinoski is correct,
  3134.     we should not subtract a level of indentation from the shift since
  3135.     inclass-shift takes care of it.
  3136.  
  3137.     * cc-mode.el:
  3138.     seems like a fix for some close parens not getting outdented when
  3139.     c++-paren-as-block-close-p is t.  DOES ANYTHING ELSE BREAK????
  3140.  
  3141. Fri Dec  4 22:11:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3142.  
  3143.     * cc-mode.el:
  3144.     fixed continued expression in a simple if statement where there is a
  3145.     comment between the if and the simple statement.
  3146.  
  3147. Thu Dec  3 23:38:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3148.  
  3149.     * cc-mode.el: cleaned up some documentation
  3150.  
  3151.     * cc-mode.el: fixed c++-indent-exp for stream operators
  3152.  
  3153. Tue Dec  1 18:01:45 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3154.  
  3155.     * cc-mode.el:
  3156.     c++-backward-over-syntactic-ws should always be given a backlimit in
  3157.     c++-calculate-indent.
  3158.  
  3159.     * cc-mode.el:
  3160.     in previous fix for c++-c-i, it is possible that containing-sexp is
  3161.     nil, so use (goto-char (or containing-sexp bod))
  3162.  
  3163.     * cc-mode.el:
  3164.     enhancements to c++-calculate-indent so that it doesn't assume that
  3165.     class opening brace starts in column zero.
  3166.  
  3167.     * cc-mode.el:
  3168.     c++-submit-bug-report now reports whether emacs is patched
  3169.  
  3170. Mon Nov 30 23:39:13 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3171.  
  3172.     * cc-mode.el: fixed K&R C arg decl indentations
  3173.  
  3174.     * cc-mode.el: cosmetic changes
  3175.  
  3176.     * cc-mode.el: removed old c++-bosw which was too slow anyway
  3177.  
  3178. Fri Nov 27 20:18:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3179.  
  3180.     * cc-mode.el:
  3181.     fixed comment indentation for new c++-comment-only-line-offset
  3182.     semantics, and also simplified electric-star and electric-slash. They
  3183.     no longer call c++-electric-terminator.
  3184.  
  3185. Fri Nov 13 22:42:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3186.  
  3187.     * cc-mode.el: some documentation improvements
  3188.  
  3189.     * cc-mode.el:
  3190.     fixed erroneous newline insertion on member init colons when
  3191.     c++-auto-newline is off.
  3192.  
  3193.     * cc-mode.el: fixed buggy regexp which would fail on this situation:
  3194.     
  3195.     int foo(                                     // foo
  3196.         int arg1,                                 // arg1
  3197.                                                  int arg2
  3198.     
  3199.     last line gets indented wrong because of the spaces b/w the foo( and
  3200.     the comment
  3201.  
  3202.     * cc-mode.el: 1. alphabetized varlist in c++-dump-state
  3203.     2. improved portability of c++-submit-bug-report for mailers other
  3204.        than vm.
  3205.  
  3206.     * cc-mode.el:
  3207.     use comment-start-skip instead of hard-coded comment regexp
  3208.  
  3209.     * cc-mode.el:
  3210.     1. added c++-emacs-is-fixed-p to check for a patched emacs
  3211.     2. automatically set c++-untame-characters to nil if patched
  3212.  
  3213.     * cc-mode.el:
  3214.     fixed comment-line indent calculation. now c++-calculate-indent does
  3215.     no comment-line calculations, its all handled in c++-indent-line and
  3216.     c++-indent-sexp
  3217.  
  3218.     * cc-mode.el: slight documentation fixup
  3219.  
  3220.     * cc-mode.el:
  3221.     vastly improved c++-comment-only-line-offset to provide ability to
  3222.     determine column-zero offsets
  3223.  
  3224.     * cc-mode.el: attempt to speed up c++-backward-over-syntactic-ws
  3225.  
  3226. Thu Nov 12 16:45:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3227.  
  3228.     * cc-mode.el:
  3229.     1. some experimental performance enhancements (not working really great)
  3230.     2. in c++-at-top-level-p, check for null containing-sexp before in-parens
  3231.  
  3232. Tue Nov  3 20:46:19 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3233.  
  3234.     * cc-mode.el:
  3235.     removed the variable c++-class-member-indent and replaced all
  3236.     occurances with c-indent-level.  it caused very bad things when
  3237.     c-indent-level != c++-class-member-indent
  3238.  
  3239.     * cc-mode.el: c++-match-paren must set parse-sexp-ignore-comments to t
  3240.  
  3241. Fri Oct  2 22:31:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3242.  
  3243.     * cc-mode.el:
  3244.     perhaps optimization on skipping backwards over c++ literal comment
  3245.  
  3246. Tue Sep 29 00:19:22 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3247.  
  3248.     * cc-mode.el: replaced code accidently removed during last bug fix
  3249.  
  3250. Mon Sep 28 22:44:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3251.  
  3252.     * cc-mode.el: fixed default[ \t]*: indentation bug
  3253.  
  3254.     * cc-mode.el:
  3255.     continuation indentation problem should now work correctly.
  3256.     c++-in-function-p search from containing-sexp or point
  3257.  
  3258.     * cc-mode.el:
  3259.     added c++-in-function-p defun to be used when checking if we're in a
  3260.     function.  Continuations inside a function
  3261.  
  3262.     * cc-mode.el: fixed the LCD Archive Entry syntax
  3263.  
  3264.     * cc-mode.el: removed c++-fill-C-comment, function is unused anywhere
  3265.  
  3266. Tue Sep  1 21:02:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3267.  
  3268.     * cc-mode.el: 1. compatibility code for loading into a patched emacs
  3269.     2. also a *slightly* improved c++-backward-over-syntactic-ws.  This
  3270.        function needs a drastic overhaul -- I bet its the main performance
  3271.        pig now that emacs is patched.
  3272.  
  3273. Fri Aug 28 22:07:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3274.  
  3275.     * cc-mode.el: final cleansing before posting
  3276.  
  3277. Thu Aug 27 16:41:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3278.  
  3279.     * cc-mode.el: added GNU copyright info
  3280.  
  3281.     * cc-mode.el: standard header and many comment changes
  3282.  
  3283. Wed Aug 26 23:40:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3284.  
  3285.     * cc-mode.el: cleaned up documentation
  3286.  
  3287.     * cc-mode.el: yet again, better documentation about untame characters
  3288.  
  3289.     * cc-mode.el: better documentation on c++-untame-characters
  3290.  
  3291.     * cc-mode.el:
  3292.     added some documentation to the front of the file to describe untame
  3293.     characters
  3294.  
  3295.     * cc-mode.el:
  3296.     default value for c++-untame-characters is now just single tick, the
  3297.     most troublesome character
  3298.  
  3299. Thu Aug 20 19:29:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3300.  
  3301.     * cc-mode.el:
  3302.     only check for inside template spec if looking at c++-class-key
  3303.  
  3304.     * cc-mode.el:
  3305.     attempted to address keyword "class" appearing inside a template
  3306.     specification:
  3307.     
  3308.     template<class Foo>
  3309.     Foo& Bar<Foo>::doit( void ){};
  3310.     
  3311.     template<class Foo, class Blat>
  3312.     Foo& Bar<Foo>::doit( void ){};
  3313.  
  3314. Tue Aug 11 14:06:02 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3315.  
  3316.     * cc-mode.el: updated docstring for c++-at-top-level-p
  3317.  
  3318. Mon Aug 10 22:19:52 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3319.  
  3320.     * cc-mode.el: c++-c-mode's mode-name is "C"
  3321.  
  3322.     * cc-mode.el: style 1-3 is default for c++-C-block-comments-indent-p
  3323.  
  3324. Thu Aug  6 19:47:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3325.  
  3326.     * cc-mode.el: fixed auto-indenting of C block comment style 3
  3327.  
  3328. Wed Aug  5 21:25:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3329.  
  3330.     * cc-mode.el: another patch to docstring
  3331.  
  3332.     * cc-mode.el: another docstring change
  3333.  
  3334.     * cc-mode.el: qualify doc string change of previous revision
  3335.  
  3336.     * cc-mode.el:
  3337.     improved (hopefully) the docstring for var c++-untame-characters
  3338.  
  3339.     * cc-mode.el: more optimizations by passing bod to c++-at-top-level-p
  3340.  
  3341.     * cc-mode.el: parameterized c++-class-key and c++-access-key
  3342.     the first is class\|struct\|union
  3343.     the second is public\|protected\|private
  3344.  
  3345.     * cc-mode.el:
  3346.     fixed (c++-at-top-level-p t) so it won't get fooled by struct declarations.
  3347.  
  3348.     * cc-mode.el:
  3349.     fixed c++-at-top-level-p so it won't get fooled by struct declarations
  3350.  
  3351. Tue Aug  4 20:59:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3352.  
  3353.     * cc-mode.el: fixed docstring for c++-tab-always-indent
  3354.  
  3355. Wed Jul 29 14:50:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3356.  
  3357.     * cc-mode.el:
  3358.     this branch combines C and C++ modes for inclusion into emacs 19
  3359.  
  3360. Tue Jul 28 19:28:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3361.  
  3362.     * cc-mode.el: fixed documentation for c++-C-block-comments-indent-p
  3363.  
  3364. Mon Jul 27 15:13:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3365.  
  3366.     * cc-mode.el:
  3367.     fixed indentation of member init list after a multiline member init call
  3368.  
  3369. Thu Jul 23 19:59:45 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3370.  
  3371.     * cc-mode.el:
  3372.     fixed c++-electric-pound when inserting # at beginning of buffer
  3373.  
  3374.     * cc-mode.el: simple fix for *some* sequence continuation lines
  3375.  
  3376. Wed Jul 22 13:28:54 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3377.  
  3378.     * cc-mode.el:
  3379.     fixed (c++-at-top-level-p t) so it wouldn't return non-nil if keyword
  3380.     class appears in arglist
  3381.  
  3382.     * cc-mode.el:
  3383.     added to c++-calculate-indent a check if we're at the bobp
  3384.  
  3385. Tue Jul 21 21:59:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3386.  
  3387.     * cc-mode.el:
  3388.     new function c++-calculate-c-indent-within-comment used instead of
  3389.     calculate-c-indent-within-comment (from c-mode).  Supports 4 styles of
  3390.     C block comments.
  3391.     
  3392.     Also, new variable c++-C-block-comments-indent-p to control which
  3393.     style(s) to use.
  3394.  
  3395.     * cc-mode.el:
  3396.     fixed c++-indent-exp to handle public/private/protected with friends
  3397.  
  3398.     * cc-mode.el: fixed indentation for the following style:
  3399.     
  3400.     class foo {
  3401.         friend class bar;
  3402.         public:
  3403.             foo();
  3404.         private:
  3405.     };
  3406.  
  3407. Mon Jul 20 20:22:58 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3408.  
  3409.     * cc-mode.el:
  3410.     1. added c++-paren-as-block-close-p to control whether a closing paren is
  3411.        treated as a closing brace.
  3412.     
  3413.     2. also added c++-block-close-brace-offset to bug list of variables
  3414.  
  3415.     * cc-mode.el: added a c++-c-mode-syntax-table
  3416.     NOTE: patch in previous version DOES work
  3417.  
  3418.     * cc-mode.el: rewrite of c++-at-top-level-p for c mode (doesn't work)
  3419.  
  3420. Fri Jul 17 20:14:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3421.  
  3422.     * cc-mode.el:
  3423.     change syntax table entry to support lemacs 19 syntax table extension
  3424.     WARNING: this may change
  3425.  
  3426. Thu Jul 16 19:35:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3427.  
  3428.     * cc-mode.el: fixed comment-only lines in c++-indent-exp
  3429.  
  3430.     * cc-mode.el:
  3431.     patch to c++-indent-exp to make it work consistently with manual
  3432.     tabbing
  3433.  
  3434.     * cc-mode.el:
  3435.     better c++-(un)comment-region functions as supplied by enami
  3436.  
  3437. Wed Jul 15 18:07:13 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3438.  
  3439.     * cc-mode.el:
  3440.     C mode entry point, including a properly working c++-(un)comment-region
  3441.  
  3442.     * cc-mode.el:
  3443.     use c++-backward-over-syntactic-ws in another appropriate location in
  3444.     c++-calculate-indent
  3445.  
  3446. Tue Jul 14 21:33:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3447.  
  3448.     * cc-mode.el: implemented Brian Kennedy's patches for { if style
  3449.     seems to be clean now
  3450.  
  3451.     * cc-mode.el: regexp to correctly pickup '\\' character constant
  3452.  
  3453.     * cc-mode.el:
  3454.     new regexp to match even number of backslashes followed by a quote for
  3455.     c++-in-literal matching of string terminators
  3456.  
  3457. Mon Jul 13 18:25:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3458.  
  3459.     * cc-mode.el:
  3460.     better fix to c++-at-top-level-p for limiting backsearching of
  3461.     class/struct
  3462.  
  3463.     * cc-mode.el: another patch to c++-at-top-level-p, but now slower
  3464.  
  3465.     * cc-mode.el:
  3466.     Igor Metz's patch to fix c++-uncomment-region for Emacs 19
  3467.     derivatives since zap-to-char now works differently
  3468.  
  3469. Fri Jul 10 22:02:26 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3470.  
  3471.     * cc-mode.el:
  3472.     in c++-fill-C-comment, its cleaner to use let-bind fill-prefix itself
  3473.     instead of saving its value and later restoring it.
  3474.  
  3475.     * cc-mode.el:
  3476.     c++-at-top-level-p never returns non-nil if inside the parens of an
  3477.     arg decl list for a function.  Also cleaned up c++-at-top-level-p's
  3478.     docstring for new functionality
  3479.  
  3480.     * cc-mode.el: 1. added usage notes to top of file
  3481.     2. another fix for indentation of member init lists in nested classes
  3482.  
  3483.     * cc-mode.el: fixed member init continuation lines
  3484.  
  3485.     * cc-mode.el:
  3486.     fixed emtpy-defun-braces cleanup when at top level wrt enclosing class
  3487.  
  3488.     * cc-mode.el: fixed nested class member init list indentation
  3489.  
  3490. Thu Jul  9 21:54:08 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3491.  
  3492.     * cc-mode.el:
  3493.     added c++-class-member-indent to varlist in bug submission
  3494.  
  3495.     * cc-mode.el: nested classes!
  3496.     added a variable c++-class-member-indent to handle indentation of
  3497.     class members relative to their enclosing class
  3498.  
  3499.     * cc-mode.el:
  3500.     new c++-at-top-level-p function for nested class definitions (does not
  3501.     work though)
  3502.  
  3503.     * cc-mode.el:
  3504.     optimized by changing all references to c++-in-comment-p and
  3505.     c++-in-open-string-p to use memq and c++-in-literal.  This should
  3506.     overall reduce the number of calls to c++-in-literal, a time consuming
  3507.     defun.
  3508.  
  3509.     * cc-mode.el:
  3510.     c++-electric-star will now re-indent the line when typed as the first
  3511.     character on a line of a C block style comment continuation
  3512.  
  3513.     * cc-mode.el:
  3514.     fix to c++-at-top-level-p to ignore struct/class declarations inside a
  3515.     defun which are not definitions:
  3516.     
  3517.     void foo()
  3518.     {
  3519.         struct blah;
  3520.     
  3521.         // we are not now (c++-at-top-level-p t)
  3522.     
  3523.     The function is still not perfect so we really need to rethink this
  3524.     algorithm.
  3525.  
  3526.     * cc-mode.el:
  3527.     collapse all c++-point-* commands into a single c++-point command with
  3528.     an argument
  3529.  
  3530. Wed Jul  8 19:40:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3531.  
  3532.     * cc-mode.el: fixed parse-start setq in c++-calculate-indent
  3533.  
  3534. Tue Jul  7 22:03:41 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3535.  
  3536.     * cc-mode.el: pasing => parsing
  3537.  
  3538.     * cc-mode.el: grammer -> grammar in comment
  3539.  
  3540.     * cc-mode.el:
  3541.     implemented c++-backward-over-syntactic-ws with help of Tor Lillqvist
  3542.     <tml@tik.vtt.fi>  and replaced all occurances of
  3543.     c++-backward-over-cpp-directives and c++-skip-backward-to-noncomment.
  3544.  
  3545. Mon Jul  6 21:25:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3546.  
  3547.     * cc-mode.el:
  3548.     colon and semi-colon are no longer electric inside of literals
  3549.  
  3550.     * cc-mode.el: it is possible that c++-beginning-of-defun with
  3551.     c++-match-header-strong equal to nil will incorrectly find the
  3552.     beginning of defun.  if this happens, c++-parse-state will return a
  3553.     null state so we can check for this and then let* bind
  3554.     c++-match-header-strongly to t.  Then we re-calculate the beginning of
  3555.     the c++ defun.
  3556.     
  3557.     Seems to work around the (char-after ...) bug
  3558.  
  3559.     * cc-mode.el: swap back to another use of c++-parse-state
  3560.  
  3561.     * cc-mode.el:
  3562.     1. don't inherit syntax table from c-mode.  Initialize completely from
  3563.        in this file
  3564.     2. wrote c++-parse-state to centralize parsing of syntactic context
  3565.  
  3566. Tue Jun 30 21:39:23 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3567.  
  3568.     * cc-mode.el:
  3569.     fixed a bug in brace-else-brace cleanup where insertion of new
  3570.     (non-else) brace could possibly go way back to clean up old else brace
  3571.     constructs.
  3572.  
  3573.     * cc-mode.el:
  3574.     use new c++-cleanup-list to replace c++-cleanup-brace-else-brace-p and
  3575.     c++-cleanup-empty-defun-braces-p, and to implement new cleanup on
  3576.     close semi.
  3577.  
  3578.     * cc-mode.el:
  3579.     fixed c++-electric-pound behavior for # directives in a level of
  3580.     nesting for alignleft behavior
  3581.  
  3582.     * cc-mode.el:
  3583.     c++-cleanup-empty-defun-braces-p only for defun braces (not for empty
  3584.     if braces for example)
  3585.  
  3586.     * cc-mode.el:
  3587.     only do the extra c++-indent-line in c++-electric-brace if hanging
  3588.     braces is turned off
  3589.  
  3590. Wed Jun 24 20:07:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3591.  
  3592.     * cc-mode.el:
  3593.     added a c++-indent-line in the c++-electric-brace to fix non-hanging
  3594.     brace error message.
  3595.  
  3596.     * cc-mode.el:
  3597.     added function c++-skip-backwards-over-cpp-directives for improved
  3598.     indentation around # lines.
  3599.  
  3600. Tue Jun 23 19:35:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3601.  
  3602.     * cc-mode.el:
  3603.     fixed stream op positioning when first >> or << is on the next
  3604.     continued line of the statement.
  3605.  
  3606.     * cc-mode.el:
  3607.     hacking the mode line should only occur in c++-mode defun, when the
  3608.     mode line is a list, otherwise, if people use the obsolete string-only
  3609.     form, their mode line will be made invalid.
  3610.  
  3611.     * cc-mode.el:
  3612.     fixed indentation of lines not at top level, which follow preprocessor
  3613.     directive lines.
  3614.  
  3615. Fri Jun 19 21:46:58 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3616.  
  3617.     * cc-mode.el:
  3618.     fixed bug when access specifier line has a comment at the end of it
  3619.  
  3620.     * cc-mode.el: simplified all point-marks to use (point-marker)
  3621.  
  3622. Thu Jun 18 15:10:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3623.  
  3624.     * cc-mode.el: fixed c++-electric-pound by using insert-before-markers
  3625.  
  3626.     * cc-mode.el: 1. added c++-electric-pound command and bound it to #
  3627.     2. also added c++-electric-pound-behavior to control how # behaves.
  3628.        Currently only supported behavior is alignleft, but eventually I
  3629.        will support nested behavior as well.
  3630.     3. changed the way c++-electric-delete and c++-insert-command work on
  3631.        # lines.  delete is never hungry in the whitespace b/w # and
  3632.        directive, and tab only inserts in this area as well.
  3633.  
  3634.     * cc-mode.el:
  3635.     added c++-delete-function variable and made c++-electric-delete use
  3636.     this variable
  3637.  
  3638. Wed Jun 17 22:29:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3639.  
  3640.     * cc-mode.el:
  3641.     added c++-special-indent-hook and bug reporting of this variable
  3642.  
  3643.     * cc-mode.el: support for lining up >> and <<
  3644.  
  3645.     * cc-mode.el:
  3646.     added c++-matching-paren as contrib'd by Gnanasekaran Swaminathan
  3647.  
  3648. Mon Jun 15 21:07:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3649.  
  3650.     * cc-mode.el: fixed c++-indent-command when looking at a blank line and
  3651.     c++-tab-always-indent is nil
  3652.  
  3653.     * cc-mode.el:
  3654.     another fix to c++-indent-command for c++-tab-always-indent == nil
  3655.  
  3656.     * cc-mode.el:
  3657.     made c++-indent-command behavior when c++-tab-always-indent is nil
  3658.     consistent with documentation
  3659.  
  3660. Thu Jun 11 22:44:47 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3661.  
  3662.     * cc-mode.el:
  3663.     added a test to see if c++-auto-newline actually inserts the newline
  3664.     doing the auto-fill
  3665.  
  3666. Wed Jun 10 19:10:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3667.  
  3668.     * cc-mode.el:
  3669.     fixed indentation of first member function after an access specifier
  3670.     inside a class definition
  3671.  
  3672. Tue Jun  9 22:45:24 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3673.  
  3674.     * cc-mode.el:
  3675.     c++-submit-bug-report uses pop-to-buffer instead of switch-buffer
  3676.  
  3677.     * cc-mode.el: refined regexp patch in previous fix
  3678.  
  3679.     * cc-mode.el:
  3680.     fixed c++-calculate-indent int the situation where we're looking at
  3681.     the line after a class declaration, but we're not inheriting.  see the
  3682.     lines after:
  3683.     ;; else first check to see if its a
  3684.     ;; multiple inheritance continuation line
  3685.     
  3686.     the regexp should match optional inheritance syntax.
  3687.  
  3688.     * cc-mode.el:
  3689.     small fix to c++-at-top-level for checking if at top wrt a containing
  3690.     class definition. (previous fix didn't work)
  3691.  
  3692.     * cc-mode.el:
  3693.     1. fixed small bug in c++-at-top-level-p for nested in class checking
  3694.     2. fixed bug in indentation of continued arg lists in class nested
  3695.        function declarations
  3696.  
  3697. Mon Jun  8 21:50:48 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3698.  
  3699.     * cc-mode.el: removed extra define-key of DEL in c++-mode-map init
  3700.  
  3701.     * cc-mode.el: fixed friend offset in c++-indent-exp
  3702.  
  3703.     * cc-mode.el:
  3704.     indent by c++-friend-offset for all friends, not just class friends
  3705.  
  3706.     * cc-mode.el: fixed scan-lists failure in c++-at-top-level-p
  3707.  
  3708.     * cc-mode.el: fixed bogus colon entry "premature sexp end" bug
  3709.  
  3710.     * cc-mode.el: much preliminary work for inline code proper formatting
  3711.  
  3712.     * cc-mode.el: fixed double colon cleanup inside defun level
  3713.  
  3714.     * cc-mode.el: added variable c++-cleanup-empty-defun-braces-p
  3715.  
  3716.     * cc-mode.el: default value for c++-comment-only-line-offset is now 0
  3717.  
  3718.     * cc-mode.el: fixed c++-electric-delete's consuming of [] characters
  3719.  
  3720.     * cc-mode.el: c++-cleanup-brace-else-brace-p is now nil by default
  3721.  
  3722.     * cc-mode.el:
  3723.     fixed c++-hanging-member-init-colon for all known situations
  3724.  
  3725. Fri Jun  5 21:13:54 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3726.  
  3727.     * cc-mode.el: reorganized the major sections of code
  3728.  
  3729. Tue Jun  2 15:18:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3730.  
  3731.     * cc-mode.el: more optimizations using c++-beginning-of-defun
  3732.  
  3733. Mon Jun  1 22:24:52 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3734.  
  3735.     * cc-mode.el: interrim speedups
  3736.  
  3737.     * cc-mode.el:
  3738.     another patch to c++-in-literal for checking for null strings. I think
  3739.     I've got it this time...
  3740.  
  3741.     * cc-mode.el:
  3742.     fixed the regexp for matching the closing double quote of a string
  3743.  
  3744. Thu May 28 22:24:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3745.  
  3746.     * cc-mode.el: added a (provide ...) to the end of the file
  3747.  
  3748.     * cc-mode.el: changed c++-brace-}-else-{-p to c++-brace-else-brace-p
  3749.  
  3750.     * cc-mode.el: fixed hanging base classes for multiple inheritance
  3751.  
  3752.     * cc-mode.el:
  3753.     completely rewrote c++-backward-to-noncomment to use c++-in-literal
  3754.     function.
  3755.  
  3756.     * cc-mode.el:
  3757.     replace all beginning-of-defun calls with c++-beginning-of-defun which
  3758.     more correctly find the true beginning of a c++ definition
  3759.  
  3760.     * cc-mode.el:
  3761.     fixed c++-in-literal for the case where "" appears as a string
  3762.  
  3763.     * cc-mode.el:
  3764.     fixed bug in c++-calculate-indent when class line is first line in
  3765.     file. also there may be no space between the class name and colon.
  3766.  
  3767.     * cc-mode.el:
  3768.     fixed c++-backward-to-noncomment bug when looking at # lines
  3769.  
  3770.     * cc-mode.el:
  3771.     fixed indentation of top-level construct immediately preceeded by a
  3772.     c-block comment
  3773.  
  3774. Wed May 27 23:30:43 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3775.  
  3776.     * cc-mode.el:
  3777.     complete replacement for c++-in-open-string-p and c++-in-comment-p
  3778.  
  3779. Tue May 26 22:25:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3780.  
  3781.     * cc-mode.el: added Warner Losh's addition of c++-relative-offset-p
  3782.  
  3783.     * cc-mode.el:
  3784.     patched c++-backward-to-start-of-do to ignore do/while constructs in
  3785.     comments
  3786.  
  3787.     * cc-mode.el: yet another patch to c++-in-comment-p
  3788.  
  3789. Fri May 22 18:09:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3790.  
  3791.     * cc-mode.el:
  3792.     added c++-access-specifier-offset for extra indentation for public,
  3793.     protected, and private keyword lines
  3794.  
  3795. Thu May 21 19:18:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3796.  
  3797.     * cc-mode.el: cosmetic changes
  3798.  
  3799. Wed May 20 22:53:43 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3800.  
  3801.     * cc-mode.el: fixed typo with c++-always-arglist-indent-p
  3802.  
  3803.     * cc-mode.el:
  3804.     mode-line-format is now not completely overridden, but instead, the
  3805.     c++-isms are tacked onto the format after the mode-name symbol (if it
  3806.     exists).
  3807.  
  3808.     * cc-mode.el: installed Terry Glanfield's patch to c++-indent-exp
  3809.  
  3810.     * cc-mode.el: documented c++-always-arglist-indent, changed the name to
  3811.     c++-always-arglist-indent-p and added to bug report list.
  3812.  
  3813.     * cc-mode.el:
  3814.     installed Milo Chan's patch for addition of c++-always-arglist-indent
  3815.  
  3816.     * cc-mode.el:
  3817.     small patch to fix whitespace only line before top-level construct
  3818.  
  3819.     * cc-mode.el:
  3820.     rewrote c++-tame-comments to look at a list of characters to tame.
  3821.     Also removed c++-tame-comments-p and replaced it with
  3822.     c++-tame-characters
  3823.  
  3824.     * cc-mode.el: equivalenced class and struct keyword syntacticly
  3825.  
  3826. Tue May 19 19:34:16 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3827.  
  3828.     * cc-mode.el: fixed multiple inheritance continuation indentation
  3829.  
  3830.     * cc-mode.el: fixed indentation for member init lists when colon hangs
  3831.  
  3832.     * cc-mode.el:
  3833.     1. c++-electric-colon is made smarter so that it only adds newlines
  3834.        after a colong when absolutely necessary
  3835.     
  3836.     2. extended semantics of c++-hanging-member-init-colon
  3837.  
  3838.     * cc-mode.el: fixed small bug in constness fix of 2.55
  3839.  
  3840. Mon May 18 21:55:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3841.  
  3842.     * cc-mode.el: fixed top level enum constructs
  3843.  
  3844.     * cc-mode.el: fixed indentation when inputing after a const function
  3845.  
  3846.     * cc-mode.el: handle default: lines exactly line case: lines
  3847.  
  3848. Thu May 14 21:37:53 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3849.  
  3850.     * cc-mode.el: updated info at top of file re, bug reports
  3851.  
  3852.     * cc-mode.el:
  3853.     fixed continued statements inside a simple for/if style loop
  3854.  
  3855.     * cc-mode.el: fixed member-init bug introduced in v2.47
  3856.  
  3857. Wed May 13 20:45:33 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3858.  
  3859.     * cc-mode.el: yet another patch to c++-in-comment-p
  3860.  
  3861.     * cc-mode.el:
  3862.     added interactive command c++-version and bound it to C-c C-v
  3863.  
  3864. Tue May 12 21:37:20 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3865.  
  3866.     * cc-mode.el: another patch to c++-in-comment-p
  3867.  
  3868.     * cc-mode.el:
  3869.     fixed c++-calculate-indent to ignore parens and such which occur in
  3870.     comment regions during the initial iterative parse of the defun.
  3871.  
  3872.     * cc-mode.el:
  3873.     in c++-in-comment-p, it was necessary to set ?/ temporarily to ". 14"
  3874.     class so that c++ style comments wouldn't affect parse-partial-sexp
  3875.  
  3876.     * cc-mode.el:
  3877.     tab does not insert a C style comment block continuation line when
  3878.     point is on or before the first non-whitespace character on the line.
  3879.  
  3880. Mon May 11 22:28:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3881.  
  3882.     * cc-mode.el: added variable c++-tame-comments-p
  3883.  
  3884.     * cc-mode.el:
  3885.     fixed c++-in-comment-p to handle special case of C style block comments
  3886.  
  3887.     * cc-mode.el: added some documentation to c++-mode
  3888.  
  3889.     * cc-mode.el:
  3890.     C-c C-b is the accepted standard for c++-submit-bug-report
  3891.  
  3892. Fri May  8 20:47:38 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3893.  
  3894.     * cc-mode.el:
  3895.     1. cleaned up all the intro information at the top of the file
  3896.     2. added c++-submit-bug-report function and related variables.
  3897.  
  3898.     * cc-mode.el: fixed mailing list info
  3899.  
  3900.     * cc-mode.el: added information about c++-mode-victims mailing list.
  3901.  
  3902.     * cc-mode.el:
  3903.     fixed c++-tame-comments. now we tame all string and parenthesis class
  3904.     characters.
  3905.  
  3906.     * cc-mode.el:
  3907.     changed syntax of single quote back to string class and added
  3908.     c++-electric-tick and c++-tame-ticks defuns to handle backslashifying
  3909.     single quotes in comment areas.
  3910.  
  3911. Thu May  7 20:03:32 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3912.  
  3913.     * cc-mode.el:
  3914.     added fix by Reed Hastings <reed@adapt.net.com> so that c++-indent-exp
  3915.     can properly terminate when // style comments are found within the
  3916.     function.
  3917.  
  3918.     * cc-mode.el:
  3919.     c++-calculate-indent should now not re-indent comment-only lines which
  3920.     begin in comment-column
  3921.  
  3922.     * cc-mode.el:
  3923.     fixed c++-electric-terminator insertion when auto-newline fills a long
  3924.     line due to auto-fill being on.
  3925.  
  3926.     * cc-mode.el:
  3927.     comment only lines which continue previous line's comment field would
  3928.     probably be indented in comment-column so those comments which begin
  3929.     in comment-column don't indent
  3930.  
  3931. Wed May  6 17:29:16 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3932.  
  3933.     * cc-mode.el:
  3934.     handle comment-only lines which continue from the previous line.
  3935.  
  3936. Mon May  4 23:33:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3937.  
  3938.     * cc-mode.el:
  3939.     added a few of Hallvard's speedups (but not the c++-auto-newline one)
  3940.  
  3941.     * cc-mode.el: changed all functions to conform to c++-<func> style
  3942.  
  3943.     * cc-mode.el:
  3944.     changed the variable c-tab-always-indent to c++-tab-always-indent and
  3945.     extended this variable's functionality.
  3946.  
  3947.     * cc-mode.el: forgot to remove the debug statement
  3948.  
  3949.     * cc-mode.el: simplified c++-cleanup-}-else-{-p
  3950.  
  3951. Sat May  2 18:12:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3952.  
  3953.     * cc-mode.el: changed c++-cleanup-}-else-{ to c++-cleanup-}-else-{-p
  3954.  
  3955. Fri May  1 21:09:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3956.  
  3957.     * cc-mode.el:
  3958.     beginnings of } else { cleanup, but not completely bugless yet
  3959.  
  3960.     * cc-mode.el:
  3961.     fixed indent-c++-exp. when setting this-indent as max of different
  3962.     values, max it with 0 not 1, otherwise some things won't ever end up
  3963.     in column zero.
  3964.  
  3965.     * cc-mode.el:
  3966.     I think I've extended calculate-c++-indent to properly handle
  3967.     switch/case statements (at least the style that I use).
  3968.  
  3969. Thu Apr 30 22:21:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3970.  
  3971.     * cc-mode.el: added c++-backward-to-start-of-do, which is analogous to
  3972.     c-backward-to-start-of-if and finds the corresponding preceding do for
  3973.     a do/while statement.  made the necessary changes to
  3974.     calculate-c++-indent to handle nested do's
  3975.  
  3976.     * cc-mode.el:
  3977.     this version will now handle continued statements with no compound
  3978.     statements on ifs, elses, fors, dos, and whiles.
  3979.  
  3980.     * cc-mode.el: add tab-width to the list of variables to dump...
  3981.  
  3982. Wed Apr 29 22:23:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3983.  
  3984.     * cc-mode.el:
  3985.     simplification of auto-hungry functions and mode-line updates with
  3986.     much thanks to Hallvard Furuseth.
  3987.  
  3988.     * cc-mode.el:
  3989.     copied c++-in-parens-p from c-mode's c-inside-parens-p.  this is so we
  3990.     can play with trying to work around emacs' bogus syntax bugs. we'll
  3991.     see if the new behavior is any better
  3992.  
  3993.     * cc-mode.el:
  3994.     eliminate infinite loop bug in c++-indent-defun by using a marker.
  3995.     this is necessary since c++-indent-line could change the location of
  3996.     the marker and just saving its buffer position is not sufficient.
  3997.  
  3998.     * cc-mode.el:
  3999.     close parens act like close braces by indenting to c-indent-level
  4000.     plus value of c++-block-close-brace-offset.
  4001.  
  4002.     * cc-mode.el:
  4003.     fixed infinite loop problem in c++-indent-defun which was caused by
  4004.     substituting forward-line for next-line.
  4005.  
  4006.     * cc-mode.el: some changes to calculate-c++-indent defun
  4007.     1. fixed unbalanced paren problem (emacs bug) in comment by adding a
  4008.        paren to the j.peck hack comment (probably should eventually clean
  4009.        up these comments)
  4010.     
  4011.     2. applied Doug Moore's (dougm@cs.rice.edu) patch to fix continued
  4012.        function declarations of the form:
  4013.     
  4014.        int foo( int i,
  4015.                 int j );
  4016.        ^---- next line should only indent to here
  4017.     
  4018.     3. cleaned up some comment sections
  4019.  
  4020.     * cc-mode.el:
  4021.     added the variable c++-block-close-brace-offset for modifying the
  4022.     offset of close braces for non-top level blocks (i.e. braces which
  4023.     don't close a function).
  4024.  
  4025.     * cc-mode.el:
  4026.     removed c++-delete-is-hungry-in-literals-p.  Delete key is now,
  4027.     *never* hungry inside literals.
  4028.  
  4029. Tue Apr 28 22:38:35 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4030.  
  4031.     * cc-mode.el: fixed free variable problems in indent-c++-exp
  4032.     1. innerloop-done was let'ed as inner-loop-done. changed all
  4033.        innerloop-done's to inner-loop-done in body of defun
  4034.     
  4035.     2. last-depth wasn't let'ed
  4036.  
  4037.     * cc-mode.el:
  4038.     added c++-delete-is-hungry-in-literals-p to control whether
  4039.     hungry-delete consumes whitespace even in literals.
  4040.  
  4041.     * cc-mode.el:
  4042.     whoops, parse-start was a free variable in c++-at-top-level-p. I just
  4043.     added the local binding to the let statement in that defun.
  4044.  
  4045.     * cc-mode.el:
  4046.     changed c++-hanging-braces-p to c++-hanging-braces. this variable can
  4047.     now control whether hanging braces happen always, never, or only on
  4048.     non-top level open braces.
  4049.  
  4050.     * cc-mode.el: fixed comment-only line related bugs:
  4051.     
  4052.     1. comment-only lines not in the first column, but at the top level
  4053.        were inserting all tab characters.
  4054.     
  4055.     2. fixed #1, but this caused non-comment top-level lines which follow
  4056.        indented top-level comment-only lines to indent, which they
  4057.        shouldn't do.
  4058.     
  4059.     I think this fixes all repercussions of comment-only lines.
  4060.  
  4061.     * cc-mode.el:
  4062.     replaced all next-line's with forward-line's since next-line is really
  4063.     a user level function (and may be overloaded by the user).
  4064.  
  4065. Mon Apr 27 16:03:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4066.  
  4067.     * cc-mode.el:
  4068.     fixed enum entry bug reported by Rolf Schreiber by patching
  4069.     c++-backward-to-noncomment.  it is possible that (max (point-bol) lim)
  4070.     is greater than point, which chokes the search-backward call.  I now
  4071.     have a test for sblim being less than or equal to point.
  4072.  
  4073. Fri Apr 24 22:02:47 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4074.  
  4075.     * cc-mode.el:
  4076.     1. added documentation in c++-mode for auto-hungry states and related
  4077.        variables.
  4078.     2. removed duplicated setq's in c++-mode buffer-local-variable setups
  4079.  
  4080.     * cc-mode.el: more header doc information
  4081.  
  4082. Wed Apr 22 22:30:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4083.  
  4084.     * cc-mode.el: final clean up before posting
  4085.  
  4086.     * cc-mode.el: bumping to baseline rev number 2.0
  4087.  
  4088. Thu Apr 16 17:05:40 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4089.  
  4090.     * cc-mode.el: added LCD Archive Entry and new file header format
  4091.  
  4092. Wed Apr 15 19:44:38 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4093.  
  4094.     * cc-mode.el:
  4095.     fixed column zero comment-only line indentation problem when inside a
  4096.     containing-sexp.
  4097.  
  4098.     * cc-mode.el: needed to add a trailing newline for proper unsharing
  4099.  
  4100. Tue Apr 14 18:12:22 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4101.  
  4102.     * cc-mode.el: Bumping
  4103.  
  4104.     * cc-mode.el: added bug reporting information
  4105.  
  4106. Fri Apr 10 17:48:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4107.  
  4108.     * cc-mode.el: cleaned up c++-mode doc string
  4109.  
  4110.     * cc-mode.el:
  4111.     1. updated mode documentation string for c++-mode to include new
  4112.        variables.
  4113.     
  4114.     2. changed c++-auto-hungry-toggle-p to c++-auto-hungry-toggle since it
  4115.        is not a binary valued variable.
  4116.  
  4117.     * cc-mode.el:
  4118.     changed ' syntax back to string quote instead of punctuation
  4119.  
  4120. Thu Apr  9 22:26:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4121.  
  4122.     * cc-mode.el: added a (goto-char (point-min)) in c++-dump-state
  4123.  
  4124.     * cc-mode.el: added c++-dump-state function for bug reporting
  4125.  
  4126. Tue Mar 31 23:38:56 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4127.  
  4128.     * cc-mode.el: lots of toggling options, plus individual toggling for
  4129.     hungry-delete-key and auto-newline states.
  4130.  
  4131.     * cc-mode.el: added organization
  4132.  
  4133. Fri Mar 27 23:19:32 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4134.  
  4135.     * cc-mode.el: major renovation on auto/hungry toggling
  4136.  
  4137. Thu Mar 26 23:43:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4138.  
  4139.     * cc-mode.el:
  4140.     use better mode-line formatting instead of hacking mode-name
  4141.  
  4142. Fri Mar 20 20:38:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4143.  
  4144.     * cc-mode.el:
  4145.     made buffer-local c++-auto-newline and c++-hungry-delete-key-p
  4146.  
  4147. Thu Mar 19 19:16:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4148.  
  4149.     * cc-mode.el:
  4150.     bound c++-toggle-auto-newline function to C-cC-t and compacted info
  4151.     mode name
  4152.  
  4153.     * cc-mode.el:
  4154.     use better mode-line updating than (redraw-display) in c++-toggle-auto-newline
  4155.  
  4156. Wed Mar 18 19:52:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4157.  
  4158.     * cc-mode.el: fixed display of c++-toggle-auto-newline
  4159.  
  4160. Tue Mar 17 21:01:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4161.  
  4162.     * cc-mode.el: test for c++-hungry-delete-key-p (typo)
  4163.  
  4164. Mon Mar 16 22:14:18 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4165.  
  4166.     * cc-mode.el: added c++-hungry-delete-key-p
  4167.  
  4168.     * cc-mode.el: handles auto newline for member init list
  4169.  
  4170.     * cc-mode.el: replaced within-c++-string w/ c++-in-open-string-p
  4171.  
  4172.     * cc-mode.el: lots of fixes for:
  4173.     1. column zero comments don't indent
  4174.     2. made electric chars comment & open-string safe
  4175.     3. made electric brace w/auto-fill work
  4176.     4. made calculate-c++-indent work for while( foo ) style
  4177.     5. added c++-hanging-braces-p for no auto-newline on left braces
  4178.  
  4179. Sat Mar 14 07:01:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4180.  
  4181.     * cc-mode.el:
  4182.     fixed double-colon and various other problems with c-auto-newline
  4183.     also changed c-auto-newline to c++-auto-newline
  4184.  
  4185.     * cc-mode.el: fixed c-auto-newline for double colons and }; syntax
  4186.  
  4187.     * cc-mode.el: fixed autoindent of comments for hanging arithmetic
  4188.  
  4189. Fri Mar 13 23:47:34 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4190.  
  4191.     * cc-mode.el: better documentation for electric-c++-slash
  4192.  
  4193.     * cc-mode.el:
  4194.     fixed c++-indent-line to work with electric-c++-slash and bind "/" to it
  4195.  
  4196.     * cc-mode.el: added c++-comment-only-line-offset
  4197.  
  4198.     * cc-mode.el: Initial revision
  4199.  
  4200.